我试图在不使用xsl:copy
的情况下复制此xml代码的part(所有包含“a”的元素)。
XML代码:
<?xml-stylesheet href="mydata.xsl" type="text/xsl" ?>
<a>
<ab x="x"><b>Test</b><a>z</a></ab>
<z x="x"><a>z</a></z>
</a>
期望的结果:
<a>
<ab x="x"><a>z</a></ab>
</a>
我已经设法使用xsl:copy
获得了预期的结果(见下文),但不确定如何更改它以使其不包含该结果。可能使用xsl:element
?任何提示?提前谢谢!
使用xsl:copy
:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="a | @* |ab">
<xsl:copy>
<xsl:apply-templates select="node() | @*"/>
</xsl:copy>
</xsl:template>
<xsl:template match="b|z"/>
</xsl:stylesheet>
答案 0 :(得分:0)
试试这个:
<xsl:template match="*">
<xsl:element name="{name()}">
<xsl:apply-templates select="node()|@*"/>
</xsl:element>
</xsl:template>
<xsl:template match="@*">
<xsl:attribute name="{name()}">
<xsl:value-of select="."/>
</xsl:attribute>
</xsl:template>
<xsl:template match="text()">
<xsl:value-of select="."/>
</xsl:template>
<xsl:template match="*[not(contains(name(), 'a'))]"/>