我对 XSL/XSLT 很陌生。我想将一个 xml 文档复制到另一个文档中,但要替换一些命名空间标签和一些具有特殊属性的标签。例如:
<root>
<ext:foo>Test</ext:foo>
<bar>Bar</bar>
<baz id="baz" x="test">
<something/>
</baz>
</root>
应该重写为:
<root>
--Test--
<bar>Bar</bar>
xxx<baz id="baz">
<something/>
</baz>xxx
</root>
是否可以复制整个 XML,然后应用一些规则来替换我要替换的标签?
最佳答案
您可以复制一些节点并使用不同的规则重写其他节点。保持<root>
和 <bar>
一样,重新写<baz>
,试试这个(未经测试)作为起点:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml"/>
<!-- Match <baz> and re-write a little -->
<xsl:template match="baz">
xxx<baz id="{@id}">
<xsl:apply-templates />
</baz>xxx
</xsl:template>
<!-- By default, copy all elements, attributes, and text -->
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
关于xml - XSL : Copy XML and then replace some tags,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7651956/