Re: [xsl] presenting xml elements as they appear in the source file

Subject: Re: [xsl] presenting xml elements as they appear in the source file
From: David Carlisle <davidc@xxxxxxxxx>
Date: Tue, 27 Apr 2010 19:53:02 +0100
On 27/04/2010 19:41, Syd Bauman wrote:
Hey, Wendell! We were just speaking of your magic with DHQ. :-)

<xsl:value-of select="name()"/>

In a namespaced environment, is the output of this specified, or is it implementation dependent?

In XSLT 1 it's implementation dependent but in practice all systems did the same thing or had multiple prefixes for the smae namespace in the source document (or you were also using namespace aliasing, in which case it wasn't always clear which prefix would be used)



in xslt 2 it is specified that you get the prefix that is stored for that node in the XDM representation of the input, although there is a bit of leeway in how the XDM tree is constructed from the original text, in practice it is a lot less system dependent in xslt 2.


I.e., if the context node is<tei:head>,
will this always return "tei:head" (where "tei" is the prefix as used
in the stylesheet, I presume) or will it sometimes make up its own
namespace prefix (e.g., "ns1:head") or generate a string that
indicates the namespace in some other way (e.g.
"http://www.tei-c.org/ns/1.0^^head";)?

In any case, such concerns can be avoided with
      <xsl:value-of select="local-name()"/>
which is what I use. (Which is why I don't know what name() returns
:-)


well they always strips the prefix so it's completely different result, actually i think you could just about claim conformance in xslt 1 if every element name was reported as being "foo" so you are not completely free of system dependency evn with local-name.
<xsl:value-of select="1"/>
is fairly safe.


David

Current Thread