Home. 
.

transparent

transparent

transparent

Altova Mailing List Archives


Re: [xsl] build-in template question

From: Garvin Riensche <g.riensche@------->
To:
Date: 9/4/2008 10:42:00 PM
Jonas Mellin schrieb:
Garvin Riensche wrote, On 2008-09-05 00:17:
Hello,



I have a question concerning text nodes. If I have an xml file like



<root>
  <e>text</e>
</root>

and a template like



<xsl:template match="e">
  <xsl:copy/>
</xsl:template>

than, the output will be "<e>text</e>".



Is the text insterted to the output by xsl:copy or by the build-in 
template



<xsl:template match="text()|@*">
  <xsl:value-of select="."/>
</xsl:template>
?
During evaluation of applicable templates on a particular node, the most 
specific template is chosen. If two or more templates is of the same 
level of specification, then the template with the highest priority is 
chosen. I have forgotten what happens if two templates cannot be 
separated (a situaiton that I try to avoid), although a qualified guess 
is that an XSLT 1.0 processor does something and an XSLT 2.0 processor 
returns an error message. Anyway, in this case, the match="e" is more 
specifc than match="text()|@*" so the first template is chosen.

I think the "match='e'" doesn't compete with the "match='text()|@*'" 
because "e" is neither a text, nor an attribute node. So that template 
for e is chosen which copies the element node "e". In the definition of 
xsl:copy it is said:

"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."

Because "text" is a child of "e" I think it is not copied by xsl:copy.

But If "e" if replaced by the sequence constructor of the template how 
can the build-in template match the text-node, which got already replaced?



regards,
Garvin


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