我想将源xml完全传输到目标xml中,只需在目标xml中添加DOCTYPE。 我的源XMl是:
<?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 :(得分:3)
任何符合要求的XSLT处理器都不生成语义不正确的DOCTYPE
声明,因为您想要的。
你想:
<!DOCTYPE ZSPL00 SYSTEM "sap2grips.dtd">
这是错误的,因为ZSPL00
不是XML文档顶部元素的名称(实际上是ns0:mt_socreate_ob
)
[28] doctypedecl ::= '<!DOCTYPE' S Name (S ExternalID)? S? ('[' intSubset ']' S?)? '>'
其中:
“文档类型声明中的 Name
必须与根元素的元素类型匹配。”