Click to return to the XML (Extensible Markup Language) home page    
XML Schema Reference     XSL Reference     Extensible Markup Languag...    
Web Workshop  |  XML (Extensible Markup Language)

XML Data Types Reference


In addition to the string and other primitive types defined by the XML 1.0 recommendation, the Microsoft XML processor supports a rich set of additional data types. This release also supports conversions between the primitive types and these rich data types.

Data types are referenced from the data type namespace, "urn:schemas-microsoft-com:datatypes". To use data types within an XML Schema, declare the data type namespace within the schema document. This documentation assumes that the data type namespace has been assigned the "dt" prefix. For example,

<Schema name="myschema"
        xmlns="urn:schemas-microsoft-com:xml-data"
        xmlns:dt="urn:schemas-microsoft-com:datatypes">
 <!-- ... -->
</Schema>

Data Types As Elements

In Internet Explorer 5.01, you can use data types as elements in an XML document (though it is not possible to type such elements through schema). So rather than declaring a data type on the instance using the dt:dt attribute, or in the schema using the dt:type attribute or <datatype> element, you can use a data type declared as an element. The following example illustrates using the dt:dt attribute:

<shoes xmlns:dt="urn:schemas-microsoft-com:datatypes" id="f1121" sizes="mens"/>
<sizes id="mens">
  <size dt:dt="int">8</size>
  <size dt:dt="int">10</size>
  <size dt:dt="int">12</size>
  </sizes>
</shoes>

The next example is the same as the above XML, but the data types are declared as elements:

<shoes xmlns:dt="urn:schemas-microsoft-com:datatypes" id="f1121" sizes="mens"/>
<sizes id="mens">
  <dt:int>8</dt:int>
  <dt:int>10</dt:int>
  <dt:int>12</dt:int>
</sizes>
</shoes>

The dataType property on data type elements is read-only and returns the data type of the element. Use the nodeTypedValue property to return the typed value of the element. Getting the nodeTypedValue of an element that has no data type returns the string value of the element. 

The contents of data type elements are validated against the type of the element. If a data type isn't supported by the parser it is disregarded, and no error occurs. A data type element cannot have child elements.

XML Data Types

bin.base64 MIME-style Base64 encoded binary BLOB.
bin.hex Hexadecimal digits representing octets.
boolean 0 or 1, where 0 == "false" and 1 =="true".
char String, one character long.
date Date in a subset ISO 8601 format, without the time data. For example: "1994-11-05".
dateTime Date in a subset of ISO 8601 format, with optional time and no optional zone. Fractional seconds can be as precise as nanoseconds. For example, "1988-04-07T18:39:09".
dateTime.tz Date in a subset ISO 8601 format, with optional time and optional zone. Fractional seconds can be as precise as nanoseconds. For example: "1988-04-07T18:39:09-08:00".
fixed.14.4 Same as "number" but no more than 14 digits to the left of the decimal point, and no more than 4 to the right.
float Real number, with no limit on digits; can potentially have a leading sign, fractional digits, and optionally an exponent. Punctuation as in U.S. English. Values range from 1.7976931348623157E+308 to 2.2250738585072014E-308.
int Number, with optional sign, no fractions, and no exponent.
number Number, with no limit on digits; can potentially have a leading sign, fractional digits, and optionally an exponent. Punctuation as in U.S. English. (Values have same range as most significant number, R8, 1.7976931348623157E+308 to 2.2250738585072014E-308.)
time Time in a subset ISO 8601 format, with no date and no time zone. For example: "08:15:27".
time.tz Time in a subset ISO 8601 format, with no date but optional time zone. For example: "08:1527-05:00".
i1 Integer represented in one byte. A number, with optional sign, no fractions, no exponent. For example: "1, 127, -128".
i2 Integer represented in one word. A number, with optional sign, no fractions, no exponent. For example: "1, 703, -32768".
i4 Integer represented in four bytes. A number, with optional sign, no fractions, no exponent. For example: "1, 703, -32768, 148343, -1000000000".
r4 Real number, with no limit on digits; can potentially have a leading sign, fractional digits, and optionally an exponent. Punctuation as in U.S. English. Values range from 3.40282347E+38F to 1.17549435E-38F.
r8 Same as "float." Real number, with no limit on digits; can potentially have a leading sign, fractional digits, and optionally an exponent. Punctuation as in U.S. English. Values range from 1.7976931348623157E+308 to 2.2250738585072014E-308.
ui1 Unsigned integer. A number, unsigned, no fractions, no exponent. For example: "1, 255".
ui2 Unsigned integer, two bytes. A number, unsigned, no fractions, no exponent. For example: "1, 255, 65535".
ui4 Unsigned integer, four bytes. A number, unsigned, no fractions, no exponent. For example: "1, 703, 3000000000".
uri Universal Resource Identifier (URI). For example, "urn:schemas-microsoft-com:Office9".
uuid Hexadecimal digits representing octets, optional embedded hyphens that are ignored. For example: "333C7BC4-460F-11D0-BC04-0080C7055A83".




Primitive XML Data Types

The World Wide Web Consortium (W3C) XML 1.0 Recommendation also defines enumerated types (notations and enumerations) and a set of tokenized types. These types, defined in the W3C XML 1.0 Recommendation, are referred to as "primitive types" within this Microsoft XML documentation.

The primitive types include the following, defined in Section 3.3.1 of the W3C XML 1.0 Recommendation.

entity Represents the XML ENTITY type.
entities Represents the XML ENTITIES type.
enumeration Represents an enumerated type (supported on attributes only).
id Represents the XML ID type.
idref Represents the XML IDREF type.
idrefs Represents the XML IDREFS type.
nmtoken Represents the XML NMTOKEN type.
nmtokens Represents the XML NMTOKENS type.
notation Represents a NOTATION type.
string Represents a string type.

Supported Data Type Conversions

The following table lists the data type conversions supported by the Microsoft XML processor in Microsoft® Internet Explorer 5.

Data typeVariant type
stringVT_BSTR, VT_BOOL, VT_CY, VT_DATE, VT_VARIANT, VT_DECIMAL, VT_UII, VT_I2, VT_I4, VT_R4, VT_R8, VT_EMPTY, VT_NULL, VT_ARRAY
numberVT_BSTR, VT_BOOL, VT_CY, VT_VARIANT, VT_DECIMAL, VT_UII, VT_I2, VT_I4, VT_R4, VT_R8, VT_EMPTY, VT_NULL
intVT_BSTR, VT_BOOL, VT_VARIANT, VT_UII, VT_I2, VT_I4, VT_EMPTY, VT_NULL
floatVT_BSTR, VT_CY, VT_VARIANT, VT_DECIMAL, VT_UII, VT_I2, VT_I4, VT_R4, VT_R8, VT_EMPTY, VT_NULL
fixed.14.4 (currency)VT_BSTR, VT_CY, VT_VARIANT, VT_DECIMAL, VT_UII, VT_I2, VT_I4, VT_R4, VT_EMPTY, VT_NULL
booleanVT_BSTR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_UII, VT_I2, VT_I4, VT_EMPTY, VT_NULL
dateTimeVT_BSTR, VT_DATE, VT_VARIANT
i1VT_BSTR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_EMPTY, VT_NULL
i2VT_BSTR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_I2, VT_EMPTY, VT_NULL
i4VT_BSTR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_I2, VT_I4, VT_EMPTY, VT_NULL
i8VT_BSTR, VT_BOOL, VT_CY, VT_VARIANT, VT_DECIMAL, VT_I2, VT_I4
ui1VT_BSTR, VT_BOOL, VT_VARIANT, VT_DECIMAL, VT_UI1, VT_EMPTY, VT_NULL
ui2VT_BSTR, VT_BOOL, VT_VARIANT, VT_UI1, VT_I2, VT_EMPTY, VT_NULL
ui4VT_BSTR, VT_BOOL, VT_VARIANT, VT_UI1, VT_I2, VT_I4, VT_EMPTY, VT_NULL
ui8VT_BSTR, VT_BOOL, VT_CY, VT_VARIANT, VT_DECIMAL, VT_UI1, VT_I2, VT_I4, VT_EMPTY, VT_NULL
r4VT_BSTR, VT_CY, VT_VARIANT, VT_DECIMAL, VT_I2, VT_I4, VT_R4, VT_EMPTY, VT_NULL
r8VT_BSTR, VT_CY, VT_VARIANT, VT_DECIMAL, VT_I2, VT_I4, VT_R4, VT_R8, VT_EMPTY, VT_NULL
uuidVT_BSTR, VT_VARIANT
uriVT_BSTR, VT_VARIANT
bin.hexVT_BSTR, VT_VARIANT, VT_ARRAY
charVT_BSTR, VT_VARIANT, VT_I2, VT_EMPTY, VT_NULL

See Also



Back to topBack to top

Did you find this topic useful? Suggestions for other topics? Write us!

© 1999 Microsoft Corporation. All rights reserved. Terms of use.