我想将模板原样复制到输出文档中,但模板标签上会显示其他属性。我正在使用相同的文件进行转换输入。
这是:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:import href="../Product/templates.xsl"/> <!--in fb changees-->
<xsl:output method="xml"/>
<xsl:template name="root" match="/">
<xsl:copy-of select="/xsl:stylesheet/xsl:template[@name='test-case-1']"/>
</xsl:template>
<xsl:template name="test-case-1" >
<test-case-1 name="koza">
<xsl:value-of select="100"/>
</test-case-1>
</xsl:template>
</xsl:stylesheet>
这是输出:
<xsl:template xmlns:xsl="http://www.w3.org/1999/XSL/Transform" name="test-case-1">
<test-case-1 name="koza">
<xsl:value-of select="100"/>
</test-case-1>
令我困扰的是xmlns:xsl
作为<xsl:template>
标记的属性的外观。为什么此命名空间属性出现在 xsl:template 中?
谢谢。
版 我期望的输出是这样的:
<xsl:template name="test-case-1">
<test-case-1 name="koza">
<xsl:value-of select="100"/>
</test-case-1>
</xsl:template>
答案 0 :(得分:1)
XSLT输出始终是命名空间良好的形式。如果输出包含带有名称空间前缀的名称,则它将始终包含该前缀的声明。
为什么要产生错误的输出?
如果要将此输出复制/粘贴到更大的XML文档中,额外的命名空间声明不会造成任何损害。如果使用XSLT转换将其复制到更大的XML文档中,则额外的命名空间声明将消失。