在XSL中,如何计算节点的属性数?
例如:
<a/>
没有属性。
<a foo="1"/>
有一个属性。
<a foo="1" bar="2"/>
有两个属性。
答案 0 :(得分:4)
对于任何元素,只需count(@*)
。
XML输入
<?xml version="1.0" encoding="UTF-8"?>
<root>
<a b="12" c="13"/>
<b d="14"/>
</root>
<强>样式表强>
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*">
<xsl:text>Attribute count for element named "</xsl:text>
<xsl:value-of select="name()"/>
<xsl:value-of select="concat('": ', count(@*))"/>
<xsl:text> </xsl:text>
<xsl:apply-templates/>
</xsl:template>
</xsl:transform>
文字输出
Attribute count for element named "root": 0
Attribute count for element named "a": 2
Attribute count for element named "b": 1
答案 1 :(得分:0)
使用
<xsl:template match="a">
<xsl:value-of select="count(@*)"/>
</xsl:tempate>