Subject: Re: [xsl] Using XSLT as a namespace filter... From: Ken Starks <ken@xxxxxxxxxxxxxxxxxxxxx> Date: Wed, 14 Jan 2009 09:38:04 +0000 |
Its usually better to post _actual_ results, so we don't all have to wonder whether you intended to change name="wooStuff" to name="WCS".
Solution:
The previously posted transform works correctly to "band-pass" only elements from a particular namespace. The example inputs I previously provided were flawed.
Transform:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:foo="http://foo.org/ns/foo" >
<xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/>
<xsl:template match="foo:*"> <xsl:copy > <xsl:call-template name="textAndattributes" /> <xsl:apply-templates /> </xsl:copy> </xsl:template>
<xsl:template match="*"><xsl:apply-templates /></xsl:template>
<xsl:template match="@*|text()" />
<xsl:template name="textAndattributes" ><xsl:copy-of select="text()|@*" /></xsl:template>
</xsl:stylesheet>
Source Document:
<?xml version="1.0" encoding="UTF-8"?>
<A name="rootElement" xmlns="http://foo.org/ns/foo" xmlns:foo="http://foo.org/ns/foo">
<B name="wooStuff" type="otherXML"> <W xmlns="http://foo.org/ns/woo" >Some Stuff</W> <W xmlns="http://foo.org/ns/woo" >Some more stuff</W> </B>
<C name="site_netCode"> <d name="outside" /> <Thing1 xmlns="http://www.thing.net/thing/1.1" > <foo:d name="inside">inside's text node</foo:d> </Thing1> </C> <C name="site_netCode"> <d name="outside" /> <d name="inside">inside's text node</d> </C>
</A>
Correct Result:
<?xml version="1.0" encoding="UTF-8"?>
<A xmlns="http://foo.org/ns/foo" xmlns:foo="http://foo.org/ns/foo" name="rootElement">
<B name="WCS" type="otherXML">
</B>
<C name="site_netCode">
<d name="outside"/>
<foo:d xmlns="http://www.thing.net/thing/1.1" name="inside">inside's text node</foo:d>
</C>
<C name="site_netCode">
<d name="outside"/>
<d name="inside">inside's text node</d>
</C>
</A>
============================================================ Nathan Potter Oregon State University, COAS ndp at coas.oregonstate.edu 104 Ocean. Admin. Bldg. 541 737 2293 voice Corvallis, OR 97331-5503 541 737 2064 fax
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Using XSLT as a namespace, Nathan Potter | Thread | Re: [xsl] Using XSLT as a namespace, Nathan Potter |
Re: [xsl] To control node duplicati, nick public | Date | Re: [xsl] Finding an untagged order, Michael Müller-Hille |
Month |