xsl-list
[Top] [All Lists]

RE: Adding namespace to an XML through XSL

2003-12-30 11:09:46
Thanks a lot Lars.  That seems to have done the trick.
 I have been having a real tough with incorporating
the namespace but this worked beautifully!  Really
appreciate it.  

Kanthi

--- Lars Huttar <lars_huttar(_at_)sil(_dot_)org> wrote:
xsl:copy-of copies nodes in the source tree to
equivalent
nodes in the result tree, with the same name and
namespace
(and the serializer will add declarations such as
xmlns="" to make
sure that Element1 is still in no namespace, just as
it was in
the source tree).

In order to change the namespace during the
transform, you
can use an identity transform, modified to change
the namespace
of each element. E.g.:

<?xml version="1.0" encoding="UTF-8"?>
<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="*" priority="3">
    <xsl:element name="{local-name()}"
namespace="Something">
      <xsl:apply-templates select="@*|node()" />
    </xsl:element>
  </xsl:template>

  <xsl:template match="@*|node()">
    <xsl:copy>
      <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
  </xsl:template>
</xsl:stylesheet>

HTH,
Lars

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com]On
Behalf Of Kanthi
Sent: Tuesday, December 30, 2003 10:06 AM
To: XSL-List(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Adding namespace to an XML through
XSL


Hi there - 

I am having problems adding a namespace using an
xsl
to an xml with no namespaces.  

My sample xml looks like this
<MainElement>
  <Element1>
   <Element2>
     <Element3> 
      :
      :
     </Element3>
   </Element2>
  </Element1>
</MainElement>

And I want to add a namespace to the <MainElement
xmlns="Something"> without any prefix.

I am doing the following in my xsl
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
xmlns="Something">
<xsl:output method="xml" version="1.0"
encoding="utf-8" indent="yes"
omit-xml-declaration="yes"/>

<xsl:template match="MainElement">
<MainElement xmlns="Something">
  <xsl:copy-of select="."/>
</MainElement>      
</xsl:template>

</xsl:stylesheet>

But the problem is that <Element1> looks like this
<Element1 xmlns="">

Any ideas on how to get round this?  I am not
exactly
sure how to use "xsl:namespace-alias" for this or
whether that will help?

 
Thanks
Kanthi

__________________________________
Do you Yahoo!?
Find out what made the Top Yahoo! Searches of 2003
http://search.yahoo.com/top2003

 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list


 XSL-List info and archive: 
http://www.mulberrytech.com/xsl/xsl-list



__________________________________
Do you Yahoo!?
Protect your identity with Yahoo! Mail AddressGuard
http://antispam.yahoo.com/whatsnewfree

 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list



<Prev in Thread] Current Thread [Next in Thread>