XML文檔中的數據類型是賦給實例中一個元素的類型,可以使用dt:dt屬性來實現,也可以通過一個XML Schema,一個XML文檔的正式定義來實現。此外,數據類型可以聲明為元素,XML解析器使用數據類型信息來驗證文檔的有效性。
以前,XML元素的值局限於一個單一的類型String,因此想要處理XML文檔的開發者需要花費大量的時間來把應用程序中的所有值都轉換為一種類型。輸入數據時解析器將會注意到數據類型的轉換。此外,因為這些值都賦予一個特定的數據類型,所以對這些值的轉換遵循要數據類型的規范,這就提供了一種驗證用戶輸入有效性的方法。
除了有一個String的值,每一個XML元素也可以有一個類型定義的值,例如下面的XML元素:
<date>1970-09-30</date>
如何對XML元素值進行數據類型定義?
看一看下面的XML文檔:
<?XML version="1.0"?>
<weather xmlns="x-schema:weatherSchema.XML">
<date>1970-09-30</date>
<degrees>67.5</degrees>
</weather>
其中"weatherSchema.XML"是下面的文件。
<Schema xmlns="urn:schemas-microsoft-com:xml-data" XMLns:dt="urn:schemas-mic
rosoft-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>
上面的schema是一個把數據類型賦給前面的XML文檔的正式定義。屬性xmlns是聲明名域的XML關鍵字,聲明'XMLns:dt="urn:schemas-microsoft-com:datatypes"'把dt賦給名域"urn:schemas-microsoft-com:datatypes.",任何定義為dt的類型都屬於名域"urn:schemas-microsoft-com:datatypes.".
Schema 和數據類型名域要在XML Schema的開始進行聲明,這樣dt詞頭可以用來指示數據類型定義中使用那種 類型的屬性。
<Schema xmlns="urn:schemas-microsoft-com:xml-data" XMLns:dt="urn:schemas-mic
rosoft-com:datatypes">
<ElementType name="NUMBER" content="textOnly" dt:type="number"/>
對XML文檔中的元素進行類型定義
元素可以通過元素實例的 dt 屬性進行類型定義,而要這樣做需要在XML文檔的開始聲明數據類型名域。
<NUMBERS XMLns:dt="urn:schemas-microsoft-com:datatypes">
<NUMBER dt:dt="number">44533</NUMBER>
</NUMBERS>
dt詞頭現在可以作為dt的屬性把數據類型賦給元素的實例。
在XML文檔中把數據類型作為元素使用
除了在元素的實例或schema中聲明數據類型外,數據類型也可以作為元素使用,比較下面的例子,第一個例子在元素的實例中聲明數據類型:
<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 XMLns:dt="urn:schemas-microsoft-com:datatypes" id="f1121" sizes="arra
y1"/>
<array id="array1">
<dt:int>8</dt:int>
<dt:int>10</dt:int>
<dt:int>12</dt:int>
</array>
而通過schema是不可能對這種元素進行類型定義的。
在 XML Data Types Reference中,有一個可以在 XML文檔中使用的數據類型的列表。