xsl-list
[Top] [All Lists]

Re: [xsl] Identity transform (case conversion)

2006-07-08 06:44:05
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(_at_)saxonica(_dot_)com> 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/

--~------------------------------------------------------------------
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>
--~--


--~------------------------------------------------------------------
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>
--~--