Subject: RE: XSL/XPath to generate a list of ancestors?
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Mon, 12 May 2008 17:13:51 +0100
|
> <xsl:template match="*" name="fullNameWorker" mode="fullName">
> <xsl:if test=".!=/">
> <xsl:apply-templates select=".." mode="fullName"/>
> <xsl:if test="..!=/">.</xsl:if>
> <xsl:value-of select="@name"/>
> </xsl:if>
> </xsl:template>
Never use != to compare node identity. It can be very expensive and it gives
the wrong answer. For example if your document is
<doc><subdoc>
...
</subdoc></doc>
then doc and subdoc both compare equal to "/", and if the document is 100Mb
in size then you will be comparing some very long strings to prove it.
In 2.0, use "is". In 1.0, use generate-id(A)=generate-id(B).
Michael Kay
http://www.saxonica.com/
|