Re: [xsl] Getting rid of xmlns="" attributes ( doubt )

Subject: Re: [xsl] Getting rid of xmlns="" attributes ( doubt )
From: "deva" <dev_stuff@xxxxxxxxxxx>
Date: Fri, 2 Jan 2004 11:50:28 -0800
Hi guys,
Just a quick question,

for the xml ..

<?xml version="1.0" encoding="utf-8"?>
<template>
  <exportTimeStamp xmlns="">
    <date>2003-12-29</date>
    <time>15:31:34</time>
  </exportTimeStamp>
  <templateInfo xmlns="" name="" id="1139410602" revision="1">
    ...
  </templateInfo>
  ...
</template>

i just made a small modification to the XSL Allen had done,....Just added
xmlns = "" to the template element, and I could see no extra xmlns
attributes..
I think It works that way.I am trying to reason now. By forcing the template
element with an empty namespace, I am asking the processor to produce the
template element and all its children in an empty namespace. and so it
doesnt show up. am i right?

My XSL
<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns="http://tempuri.org/FormSchema.xsd";

xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance";
version = '1.0'>

<xsl:output method="xml"/>

<xsl:template match="/template">
<template xmlns = "">
<xsl:attribute name="version">
<xsl:value-of select="@version"/>
</xsl:attribute>
<xsl:attribute name="readVersion">
<xsl:value-of select="@readVersion"/>
</xsl:attribute>
<xsl:copy-of select="*"/>
</template>
</xsl:template>

</xsl:stylesheet>
Thanks

============================================================================
==
Allen Wrote:
I've been using XSL for a few months now and I've been given a
request for a transformation of our XML document into another XML
document, with only some slight changes. One of the changes is to remove
a xml:space="preserve" attribute, but I consider that a trivial problem
that I can easily solve. (I'm just explicitly writing the element with
the two other attributes that appear.) The bigger problem is that I need
to add two namespaces to the XML.
>From what I've read on this list, the best place to do something
like that is to place the namespace definitions within the
<xsl:stylesheet> element. I've done that, but now all the child elements
have xmlns="" appearing within them. My XSL looks like this:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns="http://tempuri.org/FormSchema.xsd";

xmlns:xsi="http://www.w3c.org/2001/XMLSchema-instance";
version = '1.0'>

<xsl:output method="xml"/>

<xsl:template match="/template">
<template>
<xsl:attribute name="version">
<xsl:value-of select="@version"/>
</xsl:attribute>
<xsl:attribute name="readVersion">
<xsl:value-of select="@readVersion"/>
</xsl:attribute>
<xsl:copy-of select="*"/>
</template>
</xsl:template>

</xsl:stylesheet>

The transformation appears to work fine, except, as I said, the
child elements of the root <template> element, all have the attribute
xmlns="". A short snippet of it would be this:



I've found that if I change the namespace in the
<xsl:stylesheet> from xmlns to xmlns:y, then I don't get the rogue
attribute, but that is also giving me the incorrect namespace. The
source XML does not have any namespaces defined within it, and I think
that I read somewhere that the <xsl:copy-of> might have issues with
that.
Is there anyway to get the namespaces to come out correctly,
without giving me the xmlns=""?

Erik Allen



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

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


Current Thread