xsl-list
[Top] [All Lists]

RE: adding a namespace to a stylesheet automatically

2003-10-29 11:58:31
Hi

-----Original Message-----
From: owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com 
[mailto:owner-xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com] On Behalf 
Of 
Lars Huttar
Sent: Wednesday, October 29, 2003 12:05 AM
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: RE: [xsl] adding a namespace to a stylesheet automatically


This is of course the scenario that motivated
xpath-default-namespace in
XSLT 2.0.

Michael Kay

Yes. I'm wondering if anyone has written a solution to make 
do for XSLT 1.0.

You can use local-name() ans namespace-uri()

 <xsl:template match="*[local-name()='foo' and
namespace-uri()=$mynamespace]">
   <xsl:if test="parent::*[local-name()='bar' and
namespace-uri()=$mynamespace][(_at_)baz] = /*/*[local-name()='squid' and
namespace-uri()=$mynamespace]">...</xsl:if>


Just define $mynamespace as a global parameter. Every time you change
namespaces you only need ta pass the new one to the stylesheet

Regards,
Americo Albuquerque

Thanks.
I think for this kind of thing it would be just as easy
to just put in a namespace prefix where needed, and when
I want to change the namespace, just change the declaration
of that prefix in the stylesheet; or if required, do a global-replace
in my text editor to change "foo:" to "bar:".

What I'm looking for is a way to avoid the tedious and error-prone
work of going through
the stylesheet and inserting a namespace prefix [or switching
to local-name() and namespace-uri()] wherever
(and only where) an element name is given in an XPath
expression or a pattern.
I.e. when the stylesheet already exists and does not use
a namespace for the source document.

Lars


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