|
Subject: Re: [xsl] strip-spaces From: "Andrew Welch" <andrew.j.welch@xxxxxxxxx> Date: Wed, 6 Feb 2008 10:17:47 +0000 |
On 05/02/2008, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> I haven't followed this thread closely, I thought a lot of people had been
> telling you what you did wrong. The most common reason is doing something
> like
>
> <xsl:template match="parent">
> <div xmlns="namespace1">
> <xsl:apply-templates select="child"/>
> </div>
> </xsl:template>
>
> <xsl:template match="parent">
> <p>
> <xsl:apply-templates select="child"/>
> </p>
> </xsl:template>
>
> and the fix is to generate the <p> element in the same namespace as its
> parent, which can be achieved using
>
> <p xmlns="namespace1">
Another example which might help (and help confirm it in my own mind):
<xsl:template match="/">
<parent xmlns="foo">
<xsl:apply-templates/>
</parent>
</xsl:template>
<xsl:template match="child">
<child/>
</xsl:template>
you expect the output to be:
<parent xmlns="foo">
<child/>
</parent>
but instead the output is:
<parent xmlns="foo">
<child xmlns=""/>
</parent>
and you want to get rid of the xmlns="" on <child>...
The reason why it's there is because <child> is in no namespace, and
the reason it is in no namespace is because in the stylesheet:
<xsl:template match="/">
<parent xmlns="foo">
<xsl:apply-templates/>
</parent>
</xsl:template>
<xsl:template match="child">
<child/>
</xsl:template>
...<child> is in a different scope to <parent> (even though in your
mind <parent> contains <child>) - you have to see the XSLT as XML to
know which namespace child will be in, and looking at it like that its
clear that <child> is not a descendant or <parent> and not covered by
its xmlns declaration.
The solution is to put <child> in the namespace in the
XML-that-is-the-stylesheet, which can be done by declaring the
namespace on the element itself, or by moving the namespace
declaration to common ancestor - like the root element xsl:stylesheet
Is that an accurate view of whats going on?
--
Andrew Welch
http://andrewjwelch.com
Kernow: http://kernowforsaxon.sf.net/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| RE: [xsl] strip-spaces, Michael Kay | Thread | Re: [xsl] strip-spaces, David Carlisle |
| Re: [xsl] Specific xpath, David Carlisle | Date | Re: [xsl] strip-spaces, David Carlisle |
| Month |