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 |