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 |