Re: [xsl] xpath - how to return all nodes but the node matching a value in an arbitrary tree?

Subject: Re: [xsl] xpath - how to return all nodes but the node matching a value in an arbitrary tree?
From: Robert Koberg <rob@xxxxxxxxxx>
Date: Sat, 04 May 2002 11:01:05 -0700
very cool Joerg!

Does this have performance benefits (or negatives) over the (modified) standard identity template:

<xsl:template match="node()|@*">

<xsl:if test="not(@id=$id)">
<xsl:copy>
<xsl:copy-of select="@*"/>
<xsl:apply-templates/>
</xsl:copy>
</xsl:if>
</xsl:template>


best,
-Rob


Joerg Heinicke wrote:


 <xsl:param name="delete_id"/>
 <xsl:template match="/">
  <xsl:copy-of select="//category//artist[@id!=$delete_id]"/>
 </xsl:template>


You select all artist-elements, which don't have the $delete_id. This works for me.
But I think you want something different. Try a copy whith each node separately:


<xsl:param name="delete_id"/>

<xsl:template match="*|text()|@*">
  <xsl:copy>
    <xsl:apply-templates select="*[@id != $delete_id]|text()|@*"/>
  </xsl:copy>
</xsl:template>

This stylesheet would copy the complete input to the output.

A little change at the apply-templates removes the elements which should be deleted:

<xsl:apply-templates select="*[@id != $delete_id]|text()|@*"/>

Regards,

Joerg


XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list





XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list



Current Thread