xsl-list
[Top] [All Lists]

Re: [xsl] Global namespace prefixes (Corrected Examples)

2008-11-14 11:44:04


So there must be differences in our XSLT processors. With the stylesheet you provided below I get:


<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; xmlns:dap="http://xml.opendap.org/ns/DAP/3.2#";> <att:Conventions xmlns:att="http://base.document/att#";>CF-1.0</ att:Conventions> <att:logname xmlns:att="http://base.document/att#";>olson</ att:logname>
  <att:host xmlns:att="http://base.document/att#";>bb0001en</att:host>
</rdf:RDF>

No top level att prefix.

And if I add a copy-of the dummy element to the result tree:

   <xsl:template match="dap:Dataset" >
        <rdf:RDF>
<xsl:copy-of select="exslt:node-set($dummy)/*/ namespace::att"/>
            <xsl:copy-of select="$dummy"/>
            <xsl:apply-templates />
        </rdf:RDF>

   </xsl:template>

I get this:

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"; xmlns:dap="http://xml.opendap.org/ns/DAP/3.2#";>
  <dummy xmlns="http://base.document/att#"; />
<att:Conventions xmlns:att="http://base.document/att#";>CF-1.0</ att:Conventions> <att:logname xmlns:att="http://base.document/att#";>olson</ att:logname>
  <att:host xmlns:att="http://base.document/att#";>bb0001en</att:host>
</rdf:RDF>


And the dummy element doesn't have a prefix.



So really this may be a situation where a fix is simply not possible across different XSLT processors, or at least with the one I have been using.


Based on the documentation for JDOM 1.0, which is what I am using to work with my XML documents in Java land, I think I am using the Xalan 2.2d10 XSLT processor.


N


On Nov 14, 2008, at 1:10 AM, David Carlisle wrote:


That forces the att: declaration at the top, but continues to use the
unprefixed forms in element names. If you put the att: back in the
xsl:element like so:

<xsl:stylesheet version="1.0"
      xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
      xmlns:xalan="http://xml.apache.org/xalan";
      xmlns:exslt="http://exslt.org/common";
      xmlns:dap="http://xml.opendap.org/ns/DAP/3.2#";
      xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
      exclude-result-prefixes="xalan exslt"

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

    <xsl:variable name="dummy">
<xsl:element name="att:dummy" namespace="{/dap:Dataset/ @base}/att#"/>
    </xsl:variable>


   <xsl:template match="dap:Dataset" >
        <rdf:RDF>
<xsl:copy-of select="exslt:node-set($dummy)/*/ namespace::att"/>
            <xsl:apply-templates />
        </rdf:RDF>

   </xsl:template>

   <xsl:template match="dap:Attribute" >
<xsl:element name="att:{(_at_)name}" namespace="{/dap:Dataset/ @base}/att#">
        <xsl:value-of select="." />
        </xsl:element>
   </xsl:template>


</xsl:stylesheet>

then saxon6 gives

<?xml version="1.0" encoding="UTF-8"?>
<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#";
         xmlns:dap="http://xml.opendap.org/ns/DAP/3.2#";
         xmlns:att="http://base.document/att#";>

  <att:Conventions>CF-1.0</att:Conventions>

  <att:logname>olson</att:logname>

  <att:host>bb0001en</att:host>

</rdf:RDF>

________________________________________________________________________
The Numerical Algorithms Group Ltd is a company registered in England
and Wales with company number 1249803. The registered office is:
Wilkinson House, Jordan Hill Road, Oxford OX2 8DR, United Kingdom.

This e-mail has been scanned for all viruses by Star. The service is
powered by MessageLabs.
________________________________________________________________________

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


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