RE: [xsl] generating namespace attributes in result

Subject: RE: [xsl] generating namespace attributes in result
From: "Michael Kay" <mike@xxxxxxxxxxxx>
Date: Thu, 7 Apr 2005 16:20:29 +0100
In the XPath data model, namespaces are represented by namespace nodes, not
by attribute nodes. So you can't create them using xsl:attribute.

XSLT 2.0 has an instruction xsl:namespace for creating namespace nodes, but
there is no direct equivalent in XSLT 1.0. There's a workaround, which
involves creating a dummy element in the relevant namespace in a temporary
tree, and then copying its namespace nodes using xsl:copy-of.

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

> -----Original Message-----
> From: omprakash.v@xxxxxxxxxxxxx [mailto:omprakash.v@xxxxxxxxxxxxx] 
> Sent: 07 April 2005 15:20
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] generating namespace attributes in result
> 
> 
> Hi,
>         Iam using <xsl:for-each select="namespace:*"> to 
> iterate over all
> namespace attributes on the input element and write them to 
> the result.
> using <xsl:value-of select=name(.)"/> and <xsl:value-of select=."/>.
> 
> If my input xml elements are in the default namespace, then the
> <xsl:value-of select=name(.)"/>  returns an empty string.
> 
> Now when I try to do an inverse transform and try to create 
> an attribute as
> follows:
> 
> <xsl:attribute name="$attrname">
> <xsl:value-of select=$attrval"/>
> </xsl:attribute>
> 
> where attrname and attrval contain the namespace originally 
> written to the
> result, I get an error
> 
> An attribute whose value must be a QName had the value ''.
> 
> What I would like to do is
> replace the empty string I get for the namespace name with 
> 'xmlns' ( This
> doesn't agree with the processor which gives above error just 
> says 'xmlns'
> instead of the '') and regenerate the namespace just like it 
> was in the
> original xml in my inverse transform.
> 
> Hope this is clear.
> 
> Cheers,
> Omprakash.V
> 
> 
> 
> 
> 
> 
> 
> 
> 
> This e-Mail may contain proprietary and confidential 
> information and is sent for the intended recipient(s) only. 
> If by an addressing or transmission error this mail has been 
> misdirected to you, you are requested to delete this mail immediately.
> You are also hereby notified that any use, any form of 
> reproduction, dissemination, copying, disclosure, modification,
> distribution and/or publication of this e-mail message, 
> contents or its attachment other than by its intended 
> recipient/s is strictly prohibited.
> 
> Visit Us at http://www.polaris.co.in

Current Thread