xsl-list
[Top] [All Lists]

RE: [xsl] root siblings contain xmlns=""

2006-06-12 01:06:08
Firstly, a couple of things that aren't directly relevant to your question:

(a) the element name "XML" is reserved. Most parsers will accept it (perhaps
with a warning) but it would be best to choose a different name.

(b) if something is the root node of a tree then by definition it has no
siblings. I assume you mean children.

The usual cause of your problem is a structure like this:

<xsl:template match="/">
 <root xmlns="a-namespace-uri">
   <xsl:call-template name="z"/>
 </root>
</xsl:template>

<xsl:template name="z">
  <child/>
</xsl:template>

The namespace of a constructed element is determined by the way you write
the stylesheet. In the above, you have asked for <root> to go in the
namespace "a-namespace-uri", and you have asked for <child> to go in the
"null" namespace. Elements are not placed in the same namespace as their
parent in the result tree, they are placed in the namespace determined by
the instruction that creates them. The serializer then produces namespace
declarations (and if necessary, invents namespace prefixes) to honour these
assignments. If you have an unwanted namespace declaration, it is because
you have created the element in the wrong namespace. If you changed the
second template to:

<xsl:template name="z">
  <child xmlns="a-namespace-uri"/>
</xsl:template>

(or if you moved the xmlns="a-namespace-uri" to the xsl:stylesheet element)
then the problem would go away.

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

-----Original Message-----
From: christoph(_dot_)klocker(_at_)rcm(_dot_)at 
[mailto:christoph(_dot_)klocker(_at_)rcm(_dot_)at] 
Sent: 12 June 2006 07:16
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] root siblings contain xmlns=""

Hi,
I do an transformation where I add a a schema declaration to the root
element:
 
in the Stylesheet I define the root element as follows:
 
 
 
  <xsl:template match=3D"Element">
 <XML xmlns=3D"http://www.something.at/Something"; xmlns:xsi=3D"http:
 //www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation=3D"http:
 //www.something.at/Something
             http://www.something.at/something.xsd";>
          <xsl:apply-templates/>
             <Arranger>
                 <xsl:apply-templates 
select=3D"$Var//ArrangerList/*"/>
             </Arranger>
     </XML>

  <xsl:template match=3D"node()|@*">
         <xsl:copy>
             <xsl:apply-templates/>
         </xsl:copy>
     </xsl:template>
 
 in the result document all the siblings of the root Element 
contain  the empty namespace ' <element xmlns=3D""> ' 
 How can I get rid of this=3F=3F
 
 I am using Saxon8B 

 thx Christoph
 



This message and any attachment ("the Message") are 
confidential. If you are not the intended recipient any use 
is strictly prohibited. If you have received the Message in 
error, please notify the sender immediately and delete the 
Message from your system, any use is forbidden. 
Correspondence via e-mail is primarily for information 
purposes. KAG/RVG/RIFA/ImmoKAG neither makes nor accepts 
legally binding statements unless otherwise agreed to the contrary

--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: 
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--



--~------------------------------------------------------------------
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--