xsl-list
[Top] [All Lists]

Re: [xsl] XML with Default Namespace

2007-08-02 01:19:53
On 8/2/07, Karl Stubsjoen <kstubs(_at_)gmail(_dot_)com> wrote:
Ok, some progress, but I can't seem to get rid of the attribute, xmlns:o.
In my identity copy, I am trying match on attribute o, like this:

        <xsl:template match="@o" mode="transform"/>

My node match looks like this:

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

My XSL decleration includes the exclude prefix for "o", but thinking
that that is out of context, this just excludes prefixes that the xsl
document would produce, correct?  Not prefixes associated with the
source xml.

When you copy a node you copy it's namespace too - the two are bound
in stone and cannot be separated :)

exclude-result-prefixes will only exclude namespaces that aren't used
in the output (think about the "xs" namespace in 2.0) - it cannot
change the names of nodes that are copied to the output.... so if you
want to a have a node in the output with the same local-name as the
current node, then you need to create it:

<xsl:template match="*">
  <xsl:element name="{local-name()}">
    <xsl:apply-templates select="@*|node()"/>
  </xsl:element>
</xsl:template>

and for attributes:

<xsl:template match="@*">
        <xsl:attribute name="{local-name()}">
                <xsl:value-of select="."/>
        </xsl:attribute>
</xsl:template>


Wow!  I feel like such a beginner when it comes to namespaces!

You're not alone, I think everyone struggles with them.  The Excel
worksheet XML doesn't exactly use them well either....


-- 
http://andrewjwelch.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>
--~--