2009/12/4 Frédéric Schwebel <Fred(_dot_)Schwebel(_at_)ouvaton(_dot_)org>:
<xsl:template match="foo">
<!-- do things with root -->
<xsl:for-each select="*[1]">
<xsl:value-of select="." />
<!-- do many other things, call templates... -->
</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
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--