RE: [xsl] Is there a way to tell if a node is an integer?

Subject: RE: [xsl] Is there a way to tell if a node is an integer?
From: cknell@xxxxxxxxxx
Date: Sat, 22 Apr 2006 01:06:17 -0400
It's real code, allright. The problem you are experiencing is very likely the result of your using an XSLT 1.0 transformer. XSLT 2.0 opens the door to schema-aware processing. The "xs:" namespace is from XML Schema (http://www.w3.org/2001/XMLSchema). XML Schema makes possible the definition of elements as being of particular data types. If you were using an XSLT 2.0 schema-aware processor and you defined your stylesheet as being an XSLT 2.0 stylesheet, the test would work.

See these links:
http://www.xml.com/pub/a/2000/11/29/schemas/part1.html - A tutorial on XML Schema
http://www.w3.org/XML/Schema - Official site of XML Schema at w3.org
http://www.saxonica.com/ - Web site of the first (and arguably the best) XSLT 2.0 processor, available in schema-aware (paid license) and non-schema-aware (no-cost license)
-- 
Charles Knell
cknell@xxxxxxxxxx - email



-----Original Message-----
From:     Allison Bloodworth <abloodworth@xxxxxxxxxxxx>
Sent:     Fri, 21 Apr 2006 18:31:05 -0700
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:xsd: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

Current Thread