Subject: Re: [xsl] XSLT Processing Model Questions From: Peter Davis <pdavis152@xxxxxxxxx> Date: Fri, 12 Apr 2002 20:19:16 -0700 |
On Friday 12 April 2002 21:55, Dietrich Ayala wrote: > Now, in this template, the source tree context node is still the root > (/doc[1]), right? So how does this match anything, as the match expression > seems like it would match any "doc" children of the context node? > > <xsl:template match="doc/title"> > <h1> > <xsl:apply-templates/> > </h1> > </xsl:template> > > I think I'll stop there. Because if my understanding of how the initial > context node and source-tree-nodes-to-be-processed are flawed, then it only > goes downhill from here :) The reason it works is because there is a different between *match* expressions and *select* expressions. In match expressions (template match="..."), the context node does not affect the result. Here, match="doc/title" simply means to match <title> elements that are immediate children of a <doc> element, regardless of what the current context is. Once the <title> is matched, the <title> becomes the context node within the template; the "doc/" is only a restriction on which <title>s can be matched. Think of match expressions as going in reverse. Here are the basic steps: * apply-templates selects a <title> node (as a child of the context node). * The template tries to match "title" to the selected node. So far so good. * The template looks to see if the <title> also has a <doc> parent. So far so good. * Everything has matched successfully, so the template executes with the <title> as the context node. On the other hand, in expressions like in <xsl:apply-templates select="child::node()"/> (the equivilant of what you have), are relative to the context node, as you know. But this only selects the nodes; the act of matching them to a template is a totally different process (read the XPath spec; these two types of expressions even have different grammars, although they are very similar). -- Peter Davis XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] XSLT Processing Model Questio, Dietrich Ayala | Thread | RE: [xsl] XSLT Processing Model Que, Dietrich Ayala |
Re: [xsl] mystery #1: document() wi, Gary Lawrence Murphy | Date | [xsl] XSLT Processing Model Questio, Dietrich Ayala |
Month |