xsl-list
[Top] [All Lists]

RE: Processing types of type QName

2003-08-19 08:35:12
This is of course much simpler when you have schema support in XSLT 2.0,
you can then manipulate the value as an instance of type xs:QName. There
are still some pitfalls, however, in making sure that the namespace
prefix is always properly declared.

In 1.0 there are no functions for parsing the lexical QName value, but
it's easy enough to extract the prefix using substring-before. You can
translate it to a namespace URI using the namespace axis:

<xsl:if test="contains(., ':')">
  <xsl:value-of select="namespace::*[name()=substring-before(current(),
'.')]"/>
</xsl:if>

Michael Kay

-----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 
Dan Vint
Sent: 19 August 2003 15:11
To: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
Subject: [xsl] Processing types of type QName




We are considering the use of QName types for our enumerated 
values (code 
lists). We want to be able to determine the standard values 
from those 
added by members, so we want member values to be prefixed.

In theory this seems to work nice, but in XSLT it doesn't 
seem to allow for 
the normal processing that I would expect. I would really 
expect to be able 
to use name(), local-name(), etc against the text() node 
value but that 
doesn't seem to work. Is this something that I have to wait 
for v2 of XSLT?

Our code values are in the element content, so an element is of an 
enumerated type. If I use a template that matches this 
element, a simple 
<xsl:value-of select='.'/> gets me the code value acord:A, 
<xsl:value-of 
select="name(.)"/> gets me the element name of the template match 
statement. <xsl:value-of select="name(text())"/> gets a value 
of #text in 
Stylus studio.

I can use the starts-with() function to detect a standard prefix, and 
contains() to detect a prefix of  given value or at least the 
use of the 
':', but I would really like a more flexible approach and I 
need to be able 
to translate the prefix back into the namespace URI as well.

Any ideas?

..dan
      



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



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



<Prev in Thread] Current Thread [Next in Thread>