如何计算节点的属性数?

时间:2015-01-15 12:21:41

标签: xml xslt xpath

在XSL中,如何计算节点的属性数?

例如:

<a/>没有属性。

<a foo="1"/>有一个属性。

<a foo="1" bar="2"/>有两个属性。

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('&quot;: ', count(@*))"/>
        <xsl:text>&#10;</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>