我希望在使用xsl进行复制时删除所有特定标记(qq)的一个特定属性(d)。是否可以使用xsl:copy-of(不是xsl:copy)?
执行此操作XML来源:
<main>
<x b="c">
<y b="e">
<qq d="f"/>
</y>
<z>
<qq d="f"/>
<y b="e">
<qq d="f"/>
</y>
</z>
<qq d="g"/>
</x>
</main>
通缉输出:
<x b="c">
<y b="e">
<qq />
</y>
<z>
<qq />
<y b="e">
<qq />
</y>
</z>
<qq />
</x>
我试过
<xsl:copy-of select="x[name(.) !='qq' and name(@) != 'd'"/>
但它不起作用。
由于
答案 0 :(得分:2)
copy-of
在这里不会帮助您,但身份模板会:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" omit-xml-declaration="yes"/>
<xsl:template match="@* | node()">
<xsl:copy>
<xsl:apply-templates select="@* | node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="qq/@d" />
<xsl:template match="/*">
<xsl:apply-templates select="*" />
</xsl:template>
</xsl:stylesheet>
运行样本输入时的结果:
<x b="c">
<y b="e">
<qq />
</y>
<z>
<qq />
<y b="e">
<qq />
</y>
</z>
<qq />
</x>