2012-03-09 5 views
1

私はいくつかの属性を持つxsl文書を持っています。この文書の固有の属性の数を名前で数えなければなりません。例えば、XMLのxsltですべての別個の属性をカウントする

<Collection> 
    <item> 
    <Id attr1="value1">123</Id> 
    <property>u1</property> 
    </item> 
    <item> 
    <Id>1234</Id> 
    <property>u2</property> 
    </item> 
    <item attr1="value11"> 
    <Id>12345</Id> 
    <property>u3</property> 
    </item> 
    <item attr2="value2"> 
    <Id>123456</Id> 
    <property attr3="value3">u4</property> 
    </item> 
</Collection> 

4つの属性がありますが、しかしATTR1複製され、その答えは、私は、XSLT 1.0でそれを行うに興味3. です。

は今、私はこのような何かを持っているが、カウンタ

<xsl:stylesheet 
    version="1.0" 
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:key name="node" match="@*" use="local-name()"/> 

<xsl:template match="/"> 
<xsl:for-each select="//@*"> 
    <xsl:variable name="name" select="local-name()"/> 
    <xsl:if test="generate-id(.) = generate-id(key('node', $name))"> 
     <!-- increment counter? --> 
    </xsl:if> 
</xsl:for-each> 
</xsl:template> 

</xsl:stylesheet> 

おかげ

答えて

2
<xsl:value-of select="count(//@*[generate-id(.) = generate-id(key('node', local-name()))])"/> 
+0

感謝をすることはできません、それは私が何をしようとしていたものを本当にです! – unr