Re: [xsl] traversing up nodes until a certain attribute, then back to current node

Subject: Re: [xsl] traversing up nodes until a certain attribute, then back to current node
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 27 Mar 2007 22:17:05 +0100
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform";>
  <xsl:template match="*">
    <xsl:param name="x"/>
    <xsl:text>&#10;</xsl:text>
    <xsl:choose>
      <xsl:when test="$x">
	<xsl:variable name="nx" select="concat($x,' ',name())"/>
	<xsl:value-of select="$nx"/>
	<xsl:apply-templates select="*">
	  <xsl:with-param name="x" select="$nx"/>
	</xsl:apply-templates>
      </xsl:when>
      <xsl:otherwise>
	<xsl:value-of select="name()"/>
	<xsl:apply-templates select="*"/>
      </xsl:otherwise>
    </xsl:choose>
</xsl:template>

  <xsl:template match="*[@id]">
    <xsl:text>&#10;</xsl:text>
    <xsl:value-of select="@id"/>
    <xsl:apply-templates select="*">
      <xsl:with-param name="x" select="@id"/>
    </xsl:apply-templates>
  </xsl:template>

</xsl:stylesheet>


$ saxon id1.xml  id1.xsl
<?xml version="1.0" encoding="utf-8"?>
root
zero
a
a two
c
d
d five
d five six
d five six seven


David

Current Thread