Subject: RE: [xsl] Count of unique attribute names From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Fri, 3 Nov 2006 13:01:38 -0000 |
> My XSLT 2.0 solution below is working. I am just wondering if > there is an easier way that could perhaps bring > distinct-values() into play? > > <xsl:variable name="uniqueAttributeNames"> > <xsl:for-each-group select="//@*" group-by="local-name()"> > <xsl:sequence select="local-name()"/> > </xsl:for-each-group> > </xsl:variable> > <xsl:sequence > select="string-length(replace(replace($uniqueAttributeNames, > '\c+', 'x'), '\C+', ''))"/> > Firstly, if you make uniqueAttributeNames hold a sequence of strings rather than a single string, then you can use the much simpler expression count($uniqueAttributeNames) to count them. You can do this (a) by adding an "as" clause to the variable declaration <xsl:variable name="uniqueAttributeNames" as="xs:string*"> or (b) by using distinct-values. So the whole thing is just <xsl:sequence select="count(distinct-values(//@*/local-name()))"/>
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Count of unique attribute, Andrew Welch | Thread | [xsl] How to retain subtree element, Karl |
Re: [xsl] Count of unique attribute, Andrew Welch | Date | [xsl] Quotes in expression, Ed Yau |
Month |