Re: [xsl] Getting a specific element count from a generic match

Subject: Re: [xsl] Getting a specific element count from a generic match
From: "Spencer Tickner" <spencertickner@xxxxxxxxx>
Date: Mon, 10 Apr 2006 07:02:09 -0800
Hi Michael,

When using the Saxon api the error message I'm getting back is "Failed
to compile stylesheet. 1 error detected". Figuring this wasn't quite
enough info to go on I ran it through stylus with Saxon 8.1.1, I get
"Required type of first argument of name() is node(); supplied value
has type xdt:anyAtomicType" on line 11 below:

When I change line 5 to  <xsl:variable name="namelist"
select="//*[not(name() = following::*/name())]"/> I still get an error
through Stylus, but it runs fine through .net.

1 <?xml version="1.0" encoding="utf-8"?>
2 <xsl:stylesheet version="2.0"
3 x mlns:xsl="http://www.w3.org/1999/XSL/Transform";>
4
5 <xsl:variable name="namelist" select="distinct-values(//*/node-name())"/>
6
7  <xsl:variable name="root" select="/"/>
8
9 <xsl:template match="/">
10   <xsl:for-each select="$namelist">
11     <xsl:variable name="thisname" select="name()"/>
12     <name value="{$thisname}" count="{count($root//*[name() =
$thisname])}"/>
13   </xsl:for-each>
14 </xsl:template>
15
16 </xsl:stylesheet>

On 4/7/06, Jay Bryant <jay@xxxxxxxxxxxx> wrote:
> Good one, Mike, and thanks for reminding me about distinct-values().
>
> Jay Bryant
> Bryant Communication Services
>
> ----- Original Message -----
> From: "Michael Kay" <mike@xxxxxxxxxxxx>
> To: <xsl-list@xxxxxxxxxxxxxxxxxxxxxx>
> Sent: Friday, April 07, 2006 3:13 PM
> Subject: RE: [xsl] Getting a specific element count from a generic match
>
>
> > >
> > > <?xml version="1.0" encoding="UTF-8"?>
> > > <xsl:stylesheet version="2.0"
> > > xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
> > >
> > >   <xsl:variable name="namelist" select="//*[not(name() =
> > > following::*/name())]"/>
> > >
> >
> > We're talking 2.0 here: you can get all the distinct names using
> >
> > select="distinct-values(//*/node-name())"
> >
> > That's O(n log n) rather than O(n^2), and it's also namespace-aware.
> >
> > Michael Kay
> > http://www.saxonica.com/

Current Thread