Subject: Re: [xsl] Positional predicates in pattern matching From: Josh Canfield <joshcanfield@xxxxxxxxx> Date: Fri, 2 Jul 2004 12:10:55 -0700 |
Take a look at http://www.w3.org/TR/xpath#section-Location-Steps "The initial node-set is filtered by the first predicate to generate a new node-set; this new node-set is then filtered using the second predicate, and so on. The final node-set is the node-set selected by the location step. The axis affects how the expression in each predicate is evaluated and so the semantics of a predicate is defined with respect to an axis. See [2.4 Predicates]." This clearly lays out how multiple predicates are evaluated, and what their node-set context is. Try thinking about it as layers of filters. The first predicate [something] returns a node-set containing only nodes which have a child element named "something". The second predicate is operating on this new node-set, so [2] returns the second node in that list. Consider the following xml: <nodes> <b/> <b id="1"><something id="1.1"/></b> <b id="2"/> <b id="3"><something id="3.1"/></b> </nodes> this xsl: <xsl:copy-of select="/nodes/b[something]"/> would output <b id="1"><something id="1.1"/></b> <b id="3"><something id="3.1"/></b> this xsl: <xsl:copy-of select="/nodes/b[something][2]"/> would output <b id="3"><something id="3.1"/></b> Does that help? Josh On Fri, 2 Jul 2004 18:24:48 +0100, Kevin Jones <kjones@xxxxxxxxxxx> wrote: > > I am clearly missing something here or at least not explaining very well. > > If we are talking about a pattern, > > b[2] - match the 'b' which is the second sibling 'b' > > b[something][2] - match the second node that survives the match b[something] > > At least that is what I read the standard & earlier quote as saying although I > could clearly be wrong on one or both counts. I suspect both of you are > saying, > > b[something][2] - match the 'b' which is the second sibling 'b' if 'something' > evaluates to true. > > This is what I understand Saxon to be doing. > > The standard explains how the first predicate evaluation starts but is rather > silent on the effect on subsequent predicates. The simplest argument for the > first behaviour is that it is after the first predicate we follow normal > XPath behaviour. > > Thanks for your replies, > Kev. > > > > > --+------------------------------------------------------------------ > XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list > To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/ > or e-mail: <mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx> > --+-- > >
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Positional predicates in , Kevin Jones | Thread | RE: [xsl] Positional predicates in , Michael Kay |
XSLT and PHP, Pierre | Date | A syntaxic problem this time, Pierre |
Month |