Subject: [xsl] Semantics of "match" From: Wendell Piez <wapiez@xxxxxxxxxxxxxxx> Date: Mon, 3 Feb 2014 09:58:41 -0500 |
Hi, On Sun, Feb 2, 2014 at 10:54 PM, Graydon <graydon@xxxxxxxxx> wrote: > 3.0 allows more axis references in template matches than 2.0 did; 2.0 is > child and attribute only, 3.0 allows descendant. (I think it allows all > ForwardAxis axises.) > > So > > <xsl:template match="descendant::*"/> > > is a legal match attribute value. > > Leaving any use of except or intersect or union out of it for now just > what does that match mean? Well, the old (1.0) meaning could reduce as follows. Consider match as a function returning a Boolean, true() if it matches, false() if it doesn't. As an argument to the function, along with the pattern itself, we accept a node. Either the node matches the pattern, or it doesn't. match($node,$pattern) The function returns true() if (and only if) in the tree containing the node, there exists a node from which, using the pattern as an XPath expression, the node in question will be returned. (If your head now hurts, this is because matching may be easier to understand intuitively than it is to explain. :-) i.e. some $n in (root($node)//(child::node() | @*)) satisfies ($node intersect $n/eval($pattern)) where $n/eval($pattern) evaluates pattern $pattern as an XPath expression from context $n. If this holds for 3.0 (and mind you it doesn't, quite), then match="following-sibling::li" would match every 'li' in your document except first children of their respective parents. (Hey look, 'except' works fine as an English preposition.) As always, I trust those who know better will correct me. Also -- in passing -- I wonder if this will be a potential source of bugs if a pattern like 'following-sibling::li" matches due to the presence of a comment or processing instruction. Cheers, Wendell > I'm not having any luck with 5.6.3 (The > Meaning of a Pattern) in the spec, which covers child and namespace and > attribute axises, with what looks to me like a special case for > document-nodes, but it doesn't seem to cover descendant or the following > axises, and I'm having some trouble figuring out what nodes such a > template would be expected to match. -- Wendell Piez | http://www.wendellpiez.com XML | XSLT | electronic publishing Eat Your Vegetables _____oo_________o_o___ooooo____ooooooo_^
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] ANN: Understanding "climbing", Costello, Roger L. | Thread | Re: [xsl] Semantics of "match", Michael Kay |
Re: [xsl] except (was: Keys with du, Wolfgang Laun | Date | Re: [xsl] except (was: Keys with du, Dimitre Novatchev |
Month |