This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: transforming one specific subtree only
- To: xsl-list at mulberrytech dot com
- Subject: Re: transforming one specific subtree only
- From: Mike Brown <mike at skew dot org>
- Date: Tue, 7 Nov 2000 14:35:58 -0700 (MST)
- CC: jakob at free dot fr
- Reply-To: xsl-list at mulberrytech dot com
Jakob wrote:
> I have a document of type
>
> <a>
> <b ID="b1">...</b1>
> <b ID="b2">...</b1>
> <b ID="b3">...</b1>
> <b ID="b4">...</b1>
> </a>
I assume you mean </b>, not </b1>
> In my stylesheet I have a global param $nodeId defined which gets assigned an
> ID from an argument sent to the processor, such as "b2".
How global parameters are assigned by the processor is processor
dependent. I will assume that $nodeId is an object of type string.
> I would like to only transform the subtree whose root has the ID stored in
> $nodeId, and ignore, ie. not produce any output at all for all other elements.
> If no matching ID is found, some boilerplate text should be produced instead.
<xsl:param name="nodeId"/>
<xsl:template match="/">
<!-- go process 'b' elements with matching IDs -->
<xsl:apply-templates select="/a/b[@ID=$nodeId]"/>
<!-- if there are no such elements, say so -->
<xsl:if test="not(/a/b[@ID=$nodeId])">
<xsl:variable name="quot">'</xsl:variable>
<xsl:value-of select="concat('ID ',$quot,$nodeId,$quot,' not found.')"/>
</xsl:if>
</xsl:template>
<xsl:template match="b">
... things to do for any 'b' element ...
</xsl:template>
- Mike
____________________________________________________________________
Mike J. Brown, software engineer at My XML/XSL resources:
webb.net in Denver, Colorado, USA http://www.skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list