xsl-list
[Top] [All Lists]

Re: Namespaces and the identity transform

2002-10-29 11:19:27
Hi James,

How can I design an identity transform that applies the default
namespace to the output? I prefer not to have to restructure my
input, and I want all output nodes to use the strict xhtml
namespace. I substituted the above identity transform with the
following and this seems to produce the correct output, but is this
the most efficient way of doing it?

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

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

If this is the only processing that you're doing, you don't have to
worry about having a separate template for the attributes; you can
just do:

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

Note that I've used local-name() rather than name(); that's just in
case someone includes a prefix on the elements in your source
document.

Cheers,

Jeni

---
Jeni Tennison
http://www.jenitennison.com/


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



<Prev in Thread] Current Thread [Next in Thread>