Subject: RE: [xsl] root siblings contain xmlns="" From: "Michael Kay" <mike@xxxxxxxxxxxx> Date: Mon, 12 Jun 2006 09:05:42 +0100 |
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.klocker@xxxxxx [mailto:christoph.klocker@xxxxxx] > Sent: 12 June 2006 07:16 > To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx > 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
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] RE : [xsl] root siblings cont, Florent Georges | Thread | RE: [xsl] root siblings contain xml, Michael Kay |
[xsl] RE : [xsl] root siblings cont, Florent Georges | Date | RE: [xsl] root siblings contain xml, christoph . klocker |
Month |