RE: Getting Namespaces into a Transform

If you use a literal result element:

<root pageSizeUnits="{@pageSizeUnits}"
dayBreakPosition="{@dayBreakPosition}">

or

<root>
  <xsl:copy-of select="@pageSizeUnits|@dayBreakPosition"/>

then the namespaces in scope for the <root> element in the stylesheet are
copied into the result tree. 

If you use <xsl:element name="root"> they are not.

It's difficult to create explicit namespace nodes when you use <xsl:element>
in XSLT 1.0. It's easier in 2.0, because there is an <xsl:namespace>
instruction for the purpose.

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

> -----Original Message-----
> From: xmlschema-dev-request@w3.org 
> [mailto:xmlschema-dev-request@w3.org] On Behalf Of Jim Stanley
> Sent: 16 November 2004 16:09
> To: xmlschema-dev@w3.org
> Subject: RE: Getting Namespaces into a Transform
> 
> 
> >If you put exactly that in your stylesheet, then you should 
> get exactly
> that
> >in your result tree.
> 
> My first thought was, "Wow, am I stupid for missing the obvious!" 
> (This is undoubtedly still true.)  But when I looked at the transform
> file I'm still mystified.  
> 
> I'm putting in all the elements programatically:
> 
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
> <xsl:template match="root">
> 	<xsl:element name="root">
> 		<xsl:attribute name="pageSizeUnits"><xsl:value-of
> select="@pageSizeUnits"/></xsl:attribute>	
> 		<xsl:attribute name="dayBreakPosition"><xsl:value-of
> select="@dayBreakPosition"/></xsl:attribute>
> 
> So there are several attributes to the root besides the namespace
> declaration.   Since I declare the root element 
> programatically, what do
> I need to do to stick literals in there?
> 
> Thanks again for putting up with the inexperience.
> 
> Jim Stanley
> Media Services, Inc.
> 
> 

Received on Tuesday, 16 November 2004 18:42:43 UTC