Subject: Re: [xsl] Nicer way to change context-node than xsl:for-each ? From: Mukul Gandhi <gandhi.mukul@xxxxxxxxx> Date: Sat, 5 Dec 2009 13:08:36 +0530 |
2009/12/4 FrC)dC)ric Schwebel <Fred.Schwebel@xxxxxxxxxxx>: > <xsl:template match="foo"> > B <!-- do things with root --> > B <xsl:for-each select="*[1]"> > B B <xsl:value-of select="." /> > B B <!-- do many other things, call templates... --> > B </xsl:for-each> > </xsl:template> > > Usually xsl:for-each is used to process a serie of nodes, not only to > change the context. It seems to me, xsl:for-each won't be required in this case. You only want to process "one" element (*[1] implies that!). Therefore, I could have written the stylesheet logic as follows: <xsl:template match="foo"> <xsl:variable name="x" select="*[1]" /> <xsl:value-of select="$x" /> <!-- can do other things, on "x" --> </xsl:template> If you are working in a 2.0 environment, there are also possibilities for stronger compile time type checking, for example as below: <xsl:variable name="x" select="*[1]" as="element()" /> It also seems, that *[1] will always imply an element, so as="element()" may not be necessary, if you don't care if this element should exist or not. But certainly it's a good idea to specify data types of variables etc, if we know before compilation (and most of the time, we do!), what the data types should be. -- Regards, Mukul Gandhi
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Nicer way to change conte, Michael Kay | Thread | Re: [xsl] Nicer way to change conte, David Carlisle |
Re: [xsl] XPath - accessing nodes w, Mukul Gandhi | Date | Re: [xsl] XPath - accessing nodes w, Mukul Gandhi |
Month |