This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: Counting Nodes
- From: "Michael Kay" <michael dot h dot kay at ntlworld dot com>
- To: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 26 Nov 2001 10:43:10 -0000
- Subject: RE: [xsl] Counting Nodes
- Reply-to: xsl-list at lists dot mulberrytech dot com
> More of an XPath question than an XSLT question, but it arose from an
> example transformation, so this seems like a good place to ask...
>
> Is the following expression legal?
> count(//|//@*)
> It is supposed to count all nodes and attributes from the
> current context node.
No, it's not legal, because "//" by itself is not legal. You probably want
count(//node() | //@*) (though your phrase "nodes and attributes" is rather
confusing, as attributes are themselves nodes).
> I've noticed that different processers handle it differently, the main
> stumbling block being the "//" by itself.
Every conformant processor should reject this expression.
>
> I've tried reading the XPath spec and the XSLT Programmers
> Reference (2nd
> Ed), but I can't arrive at a conclusive decision.
> They appear to imply that I can't use the // by itself,
> needing to follow it
> with a node set (i.e. //* (which won't help, btw, as it
> doesn't count the
> text nodes) ), but there are sections which suggest that I
> can use it as a
> node set (e.g. AbbreviatedRelativeLocationPath, p354 of above book).
>
An AbbreviatedRelativeLocationPath consists of a RelativeLocationPath
followed by "//" followed by a Step, so I can't see how you infer from this
that "//" can be used as an expression on its own.
Mike Kay
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list