Subject: RE: 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: 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
|