2012-03-09 6 views
1

У меня есть документ xsl с некоторыми атрибутами, и мне нужно подсчитать количество уникальных атрибутов в этом документе по их имени.подсчет всех различных атрибутов с помощью xslt

, например, XML:

<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 дублируются, поэтому ответы: 3. Я заинтересован, чтобы сделать это с помощью XSLT 1.0.

Теперь у меня есть что-то вроде этого, но не может сделать встречное

<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

Смежные вопросы