xsl-list
[Top] [All Lists]

RE: namespace generation in the output.

2005-05-31 12:06:14
The XSLT 1.0 and 2.0 specs are both explicit that you can't create a
namespace node by pretending that it's an attribute called xmlns:thing.

In 2.0 you can create a namespace node in the result tree using the new
xsl:namespace instruction.

In 1.0 you have to do what docbook is doing, and copy it from a source tree
or temporary tree.

(XQuery, incidentally, doesn't provide any way of doing this. I couldn't
persuade them it was needed. Saxon XQuery has an extension to do it,
though).

Michael Kay
http://www.saxonica.com/ 

-----Original Message-----
From: Dave Pawson [mailto:davep(_at_)dpawson(_dot_)co(_dot_)uk] 
Sent: 31 May 2005 18:59
To: Xsl List
Subject: [xsl] namespace generation in the output.

Problem. I was writing a stylesheet to produce another stylesheet.
I wanted all elements output from the second stylesheet,
which were literal content to be in a specific namespace

I knew the docbook stylesheets did this to produce xhtml,
and yet Saxon kept finding out I was cheating!

<xsl:element name="xsl:stylesheet">
etc

when I tried any variant of 
<xsl:attribute name="xslns">
 ....

Saxon realised what I was doing and (correctly) told me not to.

Then I found this in the docbook stylesheets :-)


<xsl:element name="xsl:stylesheet">
  <xsl:variable name="a">
      <xsl:element name="dummy"
namespace="http://www.w3.org/1999/xhtml"/>
  </xsl:variable>
    <xsl:copy>
      <xsl:copy-of select="exsl:node-set($a)//namespace::*"/>
      <xsl:copy-of select="@*"/>
      <xsl:apply-templates/>
   </xsl:copy>
</xsl:template>


which simply copies over the namespace from the variable just 
declared,
which means that the stylesheet produced puts all literal content into
the xhtml namespace.


I thought it a clever way to achieve what is now
doable in xslt 2.0 (I'm sure MK or DC will tell us how :-)

This is an xslt 1.0 solution.





-- 
Regards, 

Dave Pawson
XSLT + Docbook FAQ
http://www.dpawson.co.uk


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





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