|
Subject: Re: [xsl] Checking for instance of xs:integer From: Jeni Tennison <jeni@xxxxxxxxxxxxxxxx> Date: Tue, 12 Oct 2004 16:44:19 +0100 |
Hi Kenneth,
> ...where I'm trying to detect if a variable has an integer value. The
> output that I currently get is :
>
> bash-2.05b$ java net.sf.saxon.Transform intck.xsl intck.xsl
>
> no
>
> At first I thought that this is because the xsl:value-of that is
> used to assign the value of $var/a was producing either a string or
> an untypedAtomic value. However, changing the "xsl:when" to test for
> xs:string and xsd:untypedAtomic didnt work either. Is there any way
> to get this to work without using a schema aware processor?
The result of the expression "$var/a" is a sequence containing an <a>
element. A sequence of elements is not the same as a sequence of
atomic values. Tests such as:
$var/a instance of element()
$var/a instance of element(a)
will evaluate as true.
Note that when you do:
<xsl:value-of select="xs:integer(2)" />
the value of the select attribute is the integer 2 (there's no
requirement for the explicit cast), in fact. The <xsl:value-of>
instruction creates a text node; text nodes don't have types, so
doing:
<xsl:value-of select="xs:integer(2)" />
is actually just the same as doing:
<xsl:text>2</xsl:text>
In:
<xsl:element name="a">
<xsl:value-of select="xs:integer(2)" />
</xsl:element>
The generated <a> element doesn't have any type associated with it.
So, for example:
$var/a instance of element(*, xs:integer)
$var/a instance of element(a, xs:integer)
data($var/a) instance of xs:integer
will be false. The first two test whether the <a> element is typed as
an xs:integer. The second tests whether the typed value of the <a>
element is an xs:integer.
If you want the <a> element to be typed as an integer, and therefore
its typed value to be an instance of xs:integer, you can do (for
example):
<a xsl:type="xs:integer">2</a>
and then the above instance of tests will be true.
Cheers,
Jeni
---
Jeni Tennison
http://www.jenitennison.com/
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| [xsl] Checking for instance of xs:i, Kenneth Stephen | Thread | RE: [xsl] Checking for instance of , Michael Kay |
| Re: [xsl] sorting and preceding-sib, Hardy Merrill | Date | Re: [xsl] sorting and preceding-sib, Kenneth Stephen |
| Month |