|
Subject: Re: [xsl] Process some elements, but not others... From: Mike Brown <mike@xxxxxxxx> Date: Thu, 13 Feb 2003 20:25:31 -0700 (MST) |
Ted Stresen-Reuter wrote:
> I have an xml document whose elements contain html as in the following
> example:
>
> <myelement>
> <p>This is <ref>the</ref> text node</p>
> </myelement>
>
> What I'd like to be able to do is transform just the ref element and
> copy all the others.
This is more or less in the XSLT 1.0 spec, under Copying.
The "identity transform" described there is a template that has a relatively
low priority and recursively copies all nodes from the source tree to the
result. If you supplement that template with another that, by virtue of
matching with a more specific node test than the other, has a higher priority,
then you can override the identity transform for certain elements:
<!-- identity transform -->
<xsl:template match="@*node()">
<xsl:copy><xsl:apply-templates select="@*|node()"/></xsl:copy>
</xsl:template>
<!-- replace a ref element with its children -->
<xsl:template match="ref">
<xsl:apply-templates/>
</xsl:template>
Also, just FYI, your source tree has a structure like this:
root
|
|__element 'myelement'
|
|__text '\n '
|
|__element 'p'
| |
| |__text 'This is '
| |
| |__element 'ref'
| | |
| | |__text 'the'
| |
| |__text ' text node'
|
|__text '\n'
...that is, "This is the text node" is not very accurate; the phrase is split
among 3 different text nodes, although if you use the templates above, you'll
end up with one :)
Mike
--
Mike J. Brown | http://skew.org/~mike/resume/
Denver, CO, USA | http://skew.org/xml/
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Process some elements, but no, Ted Stresen-Reuter | Thread | Re: [xsl] Process some elements, bu, Ted Stresen-Reuter |
| [xsl] Process some elements, but no, Ted Stresen-Reuter | Date | RE: RE: [xsl] How to implement an a, Wendell Piez |
| Month |