Re: [xsl] Identity transform (case conversion)

Subject: Re: [xsl] Identity transform (case conversion)
From: George Cristian Bina <george@xxxxxxxxxxxxx>
Date: Sat, 08 Jul 2006 16:46:15 +0300
Hi Mukul,

The XML namespace is
http://www.w3.org/XML/1998/namespace
------------------^^^
and not
http://www.w3.org/xml/1998/namespace
------------------^^^
This should answer your first question.

Best Regards,
George
---------------------------------------------------------------------
George Cristian Bina
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger
http://www.oxygenxml.com


Mukul Gandhi wrote:
Thanks Mike for the clarification. I have 2 more questions..

1st question:

You earlier gave suggestion, that comparing the namespace-uri()
instead of name() will make the stylesheet (George's code) compatible
with both Saxon and MSXML. (for supressing the namespace
xmlns:xml="http://www.w3.org/xml/1998/namespace"; in output)

The relevant portion of code is (please see the code that George posted):

<xsl:for-each select="current()//namespace::*[not(.=$currentNamepsace)
and not(name()='xml')]">
    <xsl:attribute name="{translate(name(), $small,
$caps)}:dummy{position()}" namespace="{translate(., $small,
$caps)}"></xsl:attribute>
</xsl:for-each>

I changed this to:

<xsl:for-each select="current()//namespace::*[not(starts-with(.,'http://www.w3.org'))]">
<xsl:attribute name="{translate(name(), $small,
$caps)}:dummy{position()}" namespace="{translate(., $small,
$caps)}"></xsl:attribute>
</xsl:for-each>


This works..

But following doesn't work (the namespace
http://www.w3.org/xml/1998/namespace is getting generated in the
output):

<xsl:for-each select="current()//namespace::*[not(. =
'http://www.w3.org/xml/1998/namespace')]">

(Please note the namespace uri comparison I am doing). What is wrong
with the string comparison here?

I am using Saxon 8.7.3.

2nd question:

Why at all the namespace, http://www.w3.org/xml/1998/namespace is part
of node-set namespace::*. I am not sure, but does it relate to the XML
Namespaces spec? (you hinted this in your previous answers)

Regards,
Mukul

On 7/8/06, Michael Kay <mike@xxxxxxxxxxxx> wrote:
> Can you please clarify whether this is a bug with Xalan-J 2.7.0:
>
> This instruction is not generating the namespaces in the
> output <xsl:copy-of select="current()//namespace::*" />
>

It looks like a non-conformance to me: Erratum E25 at
http://www.w3.org/1999/11/REC-xslt-19991116-errata/ specifies the behaviour
of xsl:copy and xsl:copy-of when applied to namespace nodes.


Michael Kay
http://www.saxonica.com/

Current Thread