Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: doesn't make sense #2..could you?

From: TJ@-----------.---------.---
To: NULL
Date: 10/13/2007 3:32:00 PM

Hi, Peter,
  Thanks for your great answer. Also thanks, Anthon Jones , for your great 
answer.

It makes sense in B case...
Peter, I have one more question in A case...

Just want to make sure whehter my understanding is correct.

So..basically, in A case,  root element(/hello-world) wasn't found in the 
template..so default rule kicks in and traverse the all child nodes..which are
(greeting and greeter)..
By match="/hello-world/greeting" statement in A.xsl,  it does match greeting 
child element of hello-world, which is root..so it prints by xsl:value-of 
select..like <div>..</div>....Then greeter is printed by default template 
rule....

Is my understanding correct?

Thanks again,

.....................................................................TJ


"Peter Flynn" wrote:

> TJ wrote:
> > Hi,
> > 
> > I am trying to understand the difference ....xsl...hum..
> > 
> > This is A.xsl
> > <?xml version="1.0"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> > version="1.0">
> >   <xsl:template match="/hello-world/greeting">
> >     <div><xsl:value-of select="."/></div>
> >   </xsl:template>
> > </xsl:stylesheet>
> > 
> > This is B.xsl
> > <?xml version="1.0"?>
> > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
> > version="1.0">
> >   <xsl:template match="/hello-world">
> >     <div><xsl:value-of select="greeting/text()"/></div>
> >   </xsl:template>
> > </xsl:stylesheet>
> > 
> > I tested these two xsl with this xml.
> > 
> > This is A.xml
> > <?xml version="1.0"?>
> > <?xml-stylesheet type="text/xsl" href="A.xsl"?>
> > <hello-world>
> >    <greeting>Hello, World!</greeting>
> >    <greeter>An XSLT Programmer</greeter>
> > </hello-world>
> > 
> > This is B.XML
> > <?xml version="1.0"?>
> > <?xml-stylesheet type="text/xsl" href="B.xsl"?>
> > <hello-world>
> >    <greeting>Hello, World!</greeting>
> >    <greeter>An XSLT Programmer</greeter>
> > </hello-world>
> > 
> > It produce different results in IE7.
> > A.XML output
> >    Hello, World!
> >    An XSLT Programmer
> > 
> > B.XML output
> >    Hello, World!
> > 
> > It looks to me that two xsl should produce 
> > same output.....hum...
> > Can anybody explain this?
> 
> In XSL, if there is no template matching an element type, it will be 
> assumed to equate to an "apply-templates" directive. Here, there is no 
> template matching the document root ("/"), so it will proceed to look 
> for a template matching the root element type (in your example, 
> "hello-world").
> 
> In A.xsl, there is no template matching "hello-world", so using the same 
> default rule, it will be assumed to equate to an "apply-templates" 
> directive and will walk down the tree to the first subelement, 
> "greeting", where it will test and apply the same rule, and find that a 
> template for this element type *does* exist, and it says to add the 
> string value (".") of any text or elements below this point. (In fact 
> this template doesn't need to be quite so specific in its match, just 
> "greeting" would have done; the effect of the value-of for "." means 
> that if there had been any further nested subelements inside greeting, 
> they would have been stripped of their markup and the whole content of 
> greeting concatenated and output as a simple string). Having exhausted 
> depth, the processor moves sideways to the next sibling element type, 
> "greeter". There is no template to match this, so as there are no nested 
> subelements, the text content of greeter is added to the output tree.
> 
> However, in B.xsl, there *is* a match for the root element. It doesn't 
> need to be quite so explicit, just "hello-world" would have done, 
> without the slash. In this case, the template says to add the value of 
> all the text in the "greeting" subelement to the output tree, which it 
> does. This template does not specify any further processing, so as there 
> is nothing left to look at, the processing stops here. The greeting 
> element and the greeter element, will never *themselves* get processed 
> as such, either explicitly (looking for a matching template) NOR 
> implicitly (using the default template) because while the current 
> context was "hello-world", a template *was* found (whereas in A.xsl it 
> was not), and once a template matches, no further 
> searching-for-templates occurs *for that element*: only what is 
> specifies in the matching template will get done, nothing more. And in 
> this case, as the element in question was the root element (of which 
> only one can exist), that's all, folks.
> 
> ///Peter
> -- 
> XML FAQ: http://xml.silmaril.ie/
> 


transparent
Print
Mail
Like It
Disclaimer
.

These Archives are provided for informational purposes only and have been generated directly from the Altova mailing list archive system and are comprised of the lists set forth on www.altova.com/list/index.html. Therefore, Altova does not warrant or guarantee the accuracy, reliability, completeness, usefulness, non-infringement of intellectual property rights, or quality of any content on the Altova Mailing List Archive(s), regardless of who originates that content. You expressly understand and agree that you bear all risks associated with using or relying on that content. Altova will not be liable or responsible in any way for any content posted including, but not limited to, any errors or omissions in content, or for any losses or damage of any kind incurred as a result of the use of or reliance on any content. This disclaimer and limitation on liability is in addition to the disclaimers and limitations contained in the Website Terms of Use and elsewhere on the site.

.
.

transparent

transparent