2011-12-10 30 views
0

我想將源xml完全傳輸到目標xml中,只添加目標xml中的DOCTYPE。 我的源XML是:如何使用xslt在目標xml中添加DOCTYPE?

<?xml version="1.0" encoding="UTF-8" ?> 
<ns0:mt_socreate_ob xmlns:ns0="http://socreate"> 
<ZSPL00> 
    <Empid>12</Empid> 
    <Firstname>latif</Firstname> 
    <Secondname>rahman</Secondname> 
    <Dept>tata</Dept> 
    </ZSPL00> 
    </ns0:mt_socreate_ob> 

目標XML應該

<?xml version="1.0" encoding="UTF-8" ?> 

<!DOCTYPE ZSPL00 SYSTEM "sap2grips.dtd"> 

    <ns0:mt_socreate_ob xmlns:ns0="http://socreate"> 

    <ZSPL00> 

    <Empid>12</Empid> 

    <Firstname>latif</Firstname> 

    <Secondname>rahman</Secondname> 

     <Dept>tata</Dept> 

    </ZSPL00> 

    </ns0:mt_socreate_ob> 

我寫了下面的XSLT代碼,但沒有得到期望的結果

<?xml version="1.0" encoding="UTF-8"?> 
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> 
<xsl:output method="xml" indent="no" doctype-system="sap2grips.dtd"/> 

<xsl:strip-space elements="*"/> 

<!-- Default: copy everything --> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 

</xsl:stylesheet> 

請糾正我代碼得到上述結果

+0

請發佈您使用當前XSLT獲得的結果。 –

+0

結果即時得到是: 拉提夫 拉赫曼 塔塔 我應該得到 <!DOCTYPE ZSPL00 SYSTEM」sap2grips.dtd「> 頂部 – mojib

回答

3

任何符合要求的XSLT處理器將而不是生成語義錯誤DOCTYPE聲明爲您要的那個是

你想:

<!DOCTYPE ZSPL00 SYSTEM "sap2grips.dtd"> 

,這是錯誤的,因爲ZSPL00並不是XML文檔的頂級元素的名稱(這真的是ns0:mt_socreate_ob

按照W3C XML specification

[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>' 

其中:

Name在文檔類型聲明中必須匹配根元素的元素類型。」

相關問題