我有这样的XML:
<items>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute>2</attribute>
</item>
<item>
<attribute>3</attribute>
</item>
<item>
<attribute>2</attribute>
</item>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute>4</attribute>
</item>
</items>
而且我需要一个XSLT来生成此输出:
<items>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute>2</attribute>
</item>
<item>
<attribute></attribute>
</item>
<item>
<attribute>2</attribute>
</item>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute>1</attribute>
</item>
<item>
<attribute></attribute>
</item>
</items>
基本上,我希望XSLT仅在整个文件中至少出现两次时才显示值。我只能使用XSLT 1.0做到这一点,可以吗?
您可以使用以下方法获得问题中显示的输出:
XSLT 1.0
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:key name="att" match="attribute" use="." />
<!-- identity transform -->
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="attribute[count(key('att', .)) = 1]">
<xsl:copy/>
</xsl:template>
</xsl:stylesheet>