xsl-list
[Top] [All Lists]

[xsl] Using XSLT as a namespace filter...

2009-01-12 20:15:57

Greetings,

I have an application in which I want to pass only elements in a document that are members of a particular namespace. I want the elements, the attributes and text nodes, but no child elements or attributes from other namespaces.

Naively I though that I could just do something like this:


<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
               xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
               xmlns:dap="http://xml.opendap.org/ns/DAP2";

       >
<xsl:output method='xml' version='1.0' encoding='UTF-8' indent='yes'/>

   <xsl:template match="/dap:Dataset">
       <xsl:copy >
           <xsl:apply-templates />
       </xsl:copy>
   </xsl:template>

   <xsl:template match="dap:*">
       <xsl:copy >
           <xsl:copy-of select="dap:*" />
       </xsl:copy>
   </xsl:template>

   <xsl:template match="*">
       <xsl:apply-templates />
   </xsl:template>

   <xsl:template match="text()|@*">
           <xsl:copy-of select="." />
   </xsl:template>

</xsl:stylesheet>

But all of the text content of the elements from other namespaces leaks through.

I realize that this guy:

   <xsl:template match="text()|@*">
           <xsl:copy-of select="." />
   </xsl:template>

Is the culprit.

After many futile attempts at trying write an XPATH to match only text and attributes whose parent element is in the dap namespace I am here, looking for some advice.


Any ideas? I have this feeling that the solution to this should be really simple, and that my transform is already twice as long as it should be.

Nathan


============================================================
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



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--

<Prev in Thread] Current Thread [Next in Thread>