Subject: Re: xpath - how to return all nodes but the node matching avalue 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
|