Thanks again!
Allison
-----Original Message-----
From: Michael Kay [mailto:mike@xxxxxxxxxxxx]
Sent: Saturday, April 22, 2006 2:14 AM
To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: RE: [xsl] Is there a way to tell if a node is an integer?
To add to my previous response, if you aren't using schema-aware processing,
then in 2.0 you can test
if test="$x castable as xs:integer"
Note the distinction: we're not testing whether $x *is* an integer, we're
testing whether it can be converted to an integer.
In 1.0 there's no such thing as an integer, but you can test whether a value
is numeric using
string(number($x)) = 'NaN'
and you can test whether it's a whole number using
number($x) = round(number($x))
or if you prefer (this one disallows 3.0)
not(contains($x, '.'))
Michael Kay
http://www.saxonica.com/
> -----Original Message-----
> From: Allison Bloodworth [mailto:abloodworth@xxxxxxxxxxxx]
> Sent: 22 April 2006 02:31
> To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Subject: [xsl] Is there a way to tell if a node is an integer?
>
> Hi,
>
> Is there a way to tell if a node is an integer? I found this message:
> http://www.xslt.com/html/xsl-list/2004-10/msg00364.html where
> it appears to say you can use a statement like this:
>
> <xsl:if test="data($a) instance of xs:integer">
>
> But this looks kind of strange, and maybe it is pseudo-code
> because it breaks my transform.
> <xsl:if
> test="./Locations/Location/Address/cbc:Room instance of
> xs:integer">Room is an integer</xsl:if>
>
> I want to be able to tell if the cbc:Room node here is an integer:
>
> <Address>
> <cbc:Postbox languageID="en-us"
> languageLocaleID="normalizedString">2105</cbc:Postbox>
> <cbc:Room languageID="en-us"
> languageLocaleID="normalizedString">2nd floor</cbc:Room>
>
> <cbc:StreetName languageID="en-us"
> languageLocaleID="normalizedString">Bancroft Way</cbc:StreetName>
> <cbc:CityName languageID="en-us"
> languageLocaleID="normalizedString">Berkeley</cbc:CityName>
> <cbc:PostalZone languageID="en-us"
> languageLocaleID="normalizedString">94710</cbc:PostalZone>
> <cbc:CountrySubentity languageID="en-us"
> languageLocaleID="normalizedString">California</cbc:CountrySubentity>
> <cac:Country>
> <cac:IdentificationCode languageID="en"
> codeListID="ISO3166-1"
> codeListVersionID="0.3"
> codeListSchemeURI="urn:oasis:names:specification:ubl:schema:xs
> d:CountryIdent
> ificationCode-1.0" codeListAgencyName="United Nations
> Economic Commission for Europe" codeListName="Country"
> codeListAgencyID="6">US</cac:IdentificationCode>
>
> </cac:Country>
> </Address>
>
> Thanks for any help you can give me!
>
> Allison Bloodworth
> Principal Administrative Analyst
> Technology Program Office
> University of California, Berkeley
> (415) 377-8243
> abloodworth@xxxxxxxxxxxx