подсчитать все отличительные атрибуты с помощью xslt - PullRequest
1 голос
/ 10 марта 2012

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

например 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>

спасибо

1 Ответ

2 голосов
/ 10 марта 2012
   <xsl:value-of select="count(//@*[generate-id(.) = generate-id(key('node', local-name()))])"/>
...