This is the mail archive of the xsl-list@mulberrytech.com mailing list .


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: xpath - how to return all nodes but the node matching avalue in an arbitrary tree?


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


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]