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