[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

Re: xpath query

Subject: Re: xpath query
From: "Sean Tiley" <sean.tiley@xxxxxxxxx>
Date: Sun, 20 Jan 2008 15:01:53 -0500
Re:  xpath query
That helps alot.
Thank you

Sean

On Jan 20, 2008 11:05 AM, Colin Paul Adams <colin@xxxxxxxxxxxxxxxxxx> wrote:
> >>>>> "Sean" == Sean Tiley <sean.tiley@xxxxxxxxx> writes:
>
>    Sean> I guess fundamentally I do not understand how the processor
>    Sean> applies the stylesheet templates to the xml document.
>
>    Sean> Say I have the followng XML
>
>    Sean> <root> <file name="test.java"> <error line="4"
>    Sean> message="Message1" severity="2"/> <error line="67"
>    Sean> message="Message2" severity="4"/> </file> <file
>    Sean> name="code.java"> <error line="2" message="Message1"
>    Sean> severity="2"/> <error line="54" message="Message2"
>    Sean> severity="4"/> <error line="122" message="Message1"
>    Sean> severity="2"/> </file> </root>
>
>    Sean> Then as the processor processes the tree for this xml file,
>    Sean> it finds the <root> element, then looks for a template that
>    Sean> matches it.  It would find the identity template and invoke
>    Sean> this template.  At this point, what does it put out to the
>    Sean> result tree if anything?
>
>
> A recap of what the identity template looks like. here is one form.
>
>  <xsl:template match="@* | node()">
>       <xsl:copy>
>           <xsl:apply-templates select="@* | node()"/>
>       </xsl:copy>
>   </xsl:template>
>
> If this is the template that proves to be the best match for your
> element named root, then the processor will perform an xsl:copy of
> that element.
>
> From the XSLT 2.0 recommendation:
>
> "The xsl:copy  instruction provides a way of copying the context
> item. If the context item is a node, evaluating the xsl:copy
> instruction constructs a copy of the context node, and the result of
> the xsl:copy instruction is this newly constructed node. By default,
> the namespace nodes of the context node are automatically copied as
> well, but the attributes and children of the node are not
> automatically copied."
>
> So the processor will notionally now create an empty
> <root>
>
> </root>
>
>  element in the result tree.
> It then looks at the body of the xsl:copy instruction, to see what
> else it has to do.
>
> In this case, it is instructed to apply templates that match all the
> elements attributes and child nodes.
>
> In this case there are no attributes, but we do have some element
> children (there may also be white-space text nodes, depending on
> whether or not they have been stripped - let's assume none for the
> moment).
>
> The first element child it finds is the element:
>
> <file name="test.java">
>
> So it will then try to find a template that matches this node. If you
> don't have any more specific templates to match this, then the
> identity template will match it.
>
> So it will copy it (execute the xsl:copy instruction in the
> template).
> Now the result tree looks like:
>
> <root>
>  <find>
>  </find>
> </root>
>
> At which point it will try to execute the body of the xsl:copy
> again. This time it finds and attribute node (name="test.java"), so it
> will try to match that. Again, if you have no more specific template
> than the identity template, the identity template will match. So the
> processor will execute the xsl:copy instruction in the template, and
> the result tree will now look like this:
>
> <root>
>  <find name="test.java">
>  </find>
> </root>
>
> At which point it will try to execute the body of the xsl:copy
> again. This time it finds no attributes or child nodes (an attribute
> node has no children or attribtes), so it finishes that invocation of
> the identity template, and resumes on the previous one where it left
> off (matching the attribute name in the find element). It will
> discover that find has no more attributes or child nodes, so it will
> finish exceuting that invocation of the identity template too, and
> resumes on the previous one where it left off (matching the find child
> of the root element). It will look for further children of the root
> element, and will find the first error element, so it will attempt to match
> that.
>
> Again, if you have no more specific template
> than the identity template, the identity template will match. Etc. etc.
> --
> Colin Adams
> Preston Lancashire
>
>



-- 
Sean Tiley
sean.tiley@xxxxxxxxx

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Cast Your Vote

We need your help – Vote for DataDirect XML Products!

  • Best SOA or XML site

Winners and finalists announced at SOA World Conference in November.

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2007 All Rights Reserved.