This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
RE: XSLT and Default namespaces
- To: "'xsl-list at mulberrytech dot com'" <xsl-list at mulberrytech dot com>
- Subject: RE: XSLT and Default namespaces
- From: Eckenberger Axel <Extern dot Eckenberger at kmweg dot de>
- Date: Fri, 6 Oct 2000 09:59:15 +0200
- Cc: "'nucleon at tebenet dot nl'" <nucleon at tebenet dot nl>
- Reply-To: xsl-list at mulberrytech dot com
Raimond,
first of all, what parser are you using ??? I guess it's the MS one as in
the second question you refer to their implementation.
Now, if you using the MS parser in the July version there is a problem with
the namespace implementation. I haven't tested the new version (September)
to that respect yet ... but MS said that they fixing it ...
Try this as a workaround in the meanwhile
<xsl:copy-of select="*[local-name='a']/*[local-name='b']"/>
I think name() should work as well in this case (default namespace).
I post you a message I sent to the list some time ago that contains a
description of the problem and some test code (anyone else interested send
me a mail).
Axel
> -----Original Message-----
> From: Raimond Brookman [mailto:nucleon@tebenet.nl]
> Sent: Thursday, October 05, 2000 9:03 PM
> To: xsl-list@mulberrytech.com
> Subject: XSLT and Default namespaces
>
>
> Hi,
>
> I want to transform an xml document that has declared a namespace, for
> example:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <test xmlns="myns">
> <a>
> <b></b>
> </a>
> </test>
>
> The corresponding XSLT is:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
> <xsl:output method="xml" version="1.0" encoding="UTF-8"
> indent="yes"/>
>
> <xsl:template match="/">
> <xsl:copy-of select="a/b"/>
> </xsl:template>
> </xsl:stylesheet>
>
> The resulting output document is empty.
> When i dont use a default namespace and prefix the root
> elements in the
> source document, and also declare the namespace in the XSL
> and use it in my
> X-path, it works:
>
> <?xml version="1.0" encoding="UTF-8"?>
> <x:test xmlns:x="myns">
> <a>
> <b></b>
> </a>
> </x:test>
>
> <?xml version="1.0" encoding="UTF-8"?>
> <xsl:stylesheet version="1.0"
> xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
> xmlns:x="myns">
> <xsl:output method="xml" version="1.0" encoding="UTF-8"
> indent="yes"/>
>
> <xsl:template match="/">
> <xsl:copy-of select="x:test/a/b"/>
> </xsl:template>
> </xsl:stylesheet>
>
> Result:
> <?xml version="1.0" encoding="UTF-16"?>
> <b xmlns:x="myns"></b>
>
> So, after this lengthy introduction the following questions:
> 1. Is there a way to make this work without having to
> contantly prefix all
> my xpath queries
> 2. Secondly, MS has come up with XDR, which is declared as follows:
> xmlns="x-schema:myschema.xdr"
> The problem is, that automatic validating happens in this
> case in tools
> such as XML spy. I cant find a way to declare that namespace
> inside an XSLT
> without having problems running the XLST because validation
> kicks in.....
>
> Anybody know some workarounds for these things?
>
> Grtz,
> Raimond
>
>
>
> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list