以下是我的input.xml文件中代码的一部分:
<info>
<name>
<surname>Sachin</surname>
<x> </x>
<given-names>J</given-names>
</name>
<x>, </x>
<name>
<surname>Sushant</surname>
<x> </x>
<given-names>K</given-names>
</name>
</info>
当我使用{/ 1}}元素复制这些节点时,如
copy-of
然后生成以下输出:
<xsl:copy-of select="info"></xsl:copy-of>
我想从output.xml文件中删除<info>
<name>
<surname>Sachin</surname>
<x xml:space="preserve"> </x>
<given-names>J</given-names>
</name>
<x xml:space="preserve">, </x>
<name>
<surname>Sushant</surname>
<x xml:space="preserve"> </x>
<given-names>K</given-names>
</name>
</info>
。
答案 0 :(得分:3)
xsl:copy-of制作精确副本。如果您想进行任何更改,无论多么小,那么您需要使用“修改后的身份模板”编码模式。在这种情况下,以下模板规则应该执行此操作:
<xsl:template match="*">
<xsl:copy>
<xsl:copy-of select="@* except xml:space"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
(“except”运算符是XPath 2.0 - 如果你遇到1.0,请使用@*[name() != 'xml:space']
)