|
[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] RE: XSLT and Default namespaces
If an element or attribute in the source document is in a namespace (whether default or prefixed), your stylesheet *must* include a namespace declaration corresponding to the same namespace and it *must* use a prefix as well (whatever you want). Even if your stylesheet itself has a default namespace, that namespace will only be in effect for unprefixed element names in the stylesheet, but not for names in XPath expressions or XSLT patterns. <snip href="http://www.w3.org/TR/xslt#qname" note="emphasis added"> 2.4 Qualified Names The name of an internal XSLT object, specifically a named template (see [6 Named Templates]), a mode (see [5.7 Modes]), an attribute set (see [7.1.4 Named Attribute Sets]), a key (see [12.2 Keys]), a decimal-format (see [12.3 Number Formatting]), a variable or a parameter (see [11 Variables and Parameters]) is specified as a QName. If it has a prefix, then the prefix is expanded into a URI reference using the namespace declarations in effect on the attribute in which the name occurs. The expanded-name consisting of the local part of the name and the possibly null URI reference is used as the name of the object. ***The default namespace is not used for unprefixed names.*** </snip> Evan Lenz elenz@xxxxxxxxxxx http://www.xyzfind.com XYZFind, the search engine *designed* for XML Download our free beta software: http://www.xyzfind.com/beta -----Original Message----- From: owner-xsl-list@xxxxxxxxxxxxxxxx [mailto:owner-xsl-list@xxxxxxxxxxxxxxxx]On Behalf Of Raimond Brookman Sent: Thursday, October 05, 2000 12:03 PM To: xsl-list@xxxxxxxxxxxxxxxx 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
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








