Access Typed XML Values

MSXML 5.0 SDK

Microsoft XML Core Services (MSXML) 5.0 for Microsoft Office - XML Developer's Guide

Access Typed XML Values

What is a typed XML value?

A typed XML value is an XML element value that has been assigned a data type in an XML Schema, a formal definition of an XML document. The XML parser uses the schema to validate the document. The XML Schema information resides either in a schema file or within the XML document itself.

How do I access typed XML values?

It is possible to access typed data through the XML object model. Just as you can retrieve the value of an element by calling the nodeValue property on that element's node, you can retrieve the typed value of an element by calling the nodeTypedValue property on the element itself.

For example, consider the following XML document:

<?xml version="1.0"?>
<weather xmlns="x-schema:weatherSchema.xml">
  <date>1970-09-30</date>
  <degrees>67.5</degrees>
</weather>

where weatherSchema.xml is the following file:

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
  <ElementType name="date" content="textOnly" dt:type="date"/>
  <ElementType name="degrees" content="textOnly" dt:type="float"/>
  <ElementType name="weather" content="eltOnly">
    <element type="date"/>
    <element type="degrees"/>
  </ElementType>
</Schema>

If you navigate to the <degrees> element (xmlDocument.documentElement.childNodes.item(1)), you can access its typed value by calling nodeTypedValue, as follows: xmlDocument.documentElement.childNodes.item(1).nodeTypedValue

Try it!

In the following text box, enter the code that will access the typed value of the <date> element. Assume that xmlDocument is the document object. Click the Check Code button.

To experience the validation capability of data types, see what happens when you enter a date that is not valid. In the following text box, enter an invalid date using the yyyy-mm-dd format. For example, enter "1998-13-02", and then click the Check Date Validation button.