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

RE: Apply-templates - how to omit top level element ta

Subject: RE: Apply-templates - how to omit top level element tags?
From: "Mike Schinkel" <mikes@xxxxxxxxx>
Date: Thu, 8 Sep 2005 17:04:51 -0400
RE:  Apply-templates - how to omit top level element ta
Wendell Piez >> Accordingly, an "XML document" as seen through the lens
of XSLT/XPath has no "tags", and you won't hear us talking about tags.
(What you're more likely to hear is David C saying "don't talk about
tags".)

Remember that part about you saying "Sometimes in these threads we end
up talking theory so much that we fail to define the actual problem at
hand sufficiently well to really solve it...."  :) :) :)

Wendell Piez >> You have run into a difficulty that is social, not
technical. Lacking a complete description of the problem, several of us
have tried to help with various suggestions, some of which may actually
be more helpful than others. There is no one to be blamed for this:
after all, you need to be an expert in XSLT to know how to summarize and
present problems efficiently in XSLT-speak.

Sadly, I completely agree. :(

Wendell Piez >> Of course we can't warrant that all suggestions on the
list will be good ones. This is why successful XSLTers are skeptical and
do not just paste code without understanding it.

But I have to paste code to test it, otherwise I'll never understand it
(some people might, but I learn through trial and error)! :)


>> BTW, <xsl:apply-templates select="Name/node()"/> is just the same as
<xsl:apply-templates select="Name"/> if you also have a template...
>> <xsl:template match="Name">
>>    <xsl:apply-templates/>
>> </xsl:template>
>> ...which happens to be exactly what will happen to a "Name" element
(or any other template) by default (if you give no template). Thus,
>> select="Name/node()" is not the only solution or necessarily the best
one to your problem. (If you need a template matching Name
>> that does something else, then it might be.)
>>
Not so (I've just learned) when this is also part of the stylesheet:

	<xsl:template match="@*|node()">
		<xsl:copy>
			<xsl:apply-templates select="@*|node()"/>
		</xsl:copy>
	</xsl:template>

Of course I didn't realize that until I had to produce a cut down
version of the example to email you before.

>> I do hope that in your object-oriented code, despite having
encapsulated things, you still know "how it works throughout". That is,
you have a concept of how that code will be compiled and executed and
how its different parts will relate to one another.

Yes, but I don't have to worry about a global variable changing and
having a tested part of my encapsulated code no longer work.  I have
seen that happen many times when building my stylesheet, and can find
nothing that changes this.

BTW, I think my comments are stepping on the toes of the "XSLT
religion", for that I am sorry.  I am just a Secularist and try to apply
critical thinking whenever possible, but of course I'm human so I'm
still flawed.

>> There are such ways: they're called template rules. Because in XSLT
transformations the "entirely new context" is usually defined in
relation to the input document, the primary (though not the only)
mechanism for relating templates to their context of execution is the
match pattern.

I'm not familiar with XSLT "template rules"; is this a 2.0 concept?

Thanks again...

-Mike

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

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

Buy Stylus Studio Now

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-2013 All Rights Reserved.