xsl-list
[Top] [All Lists]

Namespaces and template matching

2002-11-07 21:42:36
Good People,

I am struggling with doing a template match when namespaces are
involved.

I have the following stylesheet which renames any 'x' element to 'y':

<?xml version='1.0' encoding='UTF-8'?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform";
version="1.0">
   <xsl:template match="x">
      <xsl:element name="y">
         <xsl:apply-templates select="@*"/>
         <xsl:apply-templates/>
      </xsl:element>
   </xsl:template>
   <xsl:template match="@*|node()">
      <xsl:copy>
         <xsl:apply-templates select="@*"/>
         <xsl:apply-templates/>
      </xsl:copy>
   </xsl:template>
</xsl:stylesheet>

A document without namespaces translates as expected:

<?xml version="1.0" encoding="UTF-8"?>
<a>
   <x a="1" b="2" c="3" d="4" />
</a>

becomes:

<?xml version="1.0" encoding="UTF-8"?>
<a>
   <y a="1" b="2" c="3" d="4"/>
</a>

But when a namespace is placed on the root node, it ceases to work:

<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="b">
   <x a="1" b="2" c="3" d="4" />
</a>

becomes:

<?xml version="1.0" encoding="UTF-8"?>
<a xmlns="b">
   <x a="1" b="2" c="3" d="4"/>
</a>

Why doesn't the second document translate properly?  What can I do to
make it happen?

Thanks in advance for your assistance.

Best Regards,
Dave

P.S.  I am using Xalan if that makes any difference.


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



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