RE: [xsl] XSL/XPath to generate a list of ancestors?

Subject: RE: [xsl] 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/

Current Thread