XML模式


XML模式被稱為XML架構定義(XSD)。它是用來描述和驗證的結構和XML資料的內容。 XML模式定義的元素,屬性和資料型別。Schema元素的名稱空間支援。它類似於描述了資料庫中的資料的資料庫模式.

句法

在XML文件中,您需要如下宣告模式:

<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

例如

下面的範例演示了如何使用模式:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="contact">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name" type="xs:string" />
            <xs:element name="company" type="xs:string" />
            <xs:element name="phone" type="xs:int" />
        </xs:sequence>
    </xs:complexType>
</xs:element>
</xs:schema>

XML模式的基本思路是,它描述了合法格式的XML文件可以接受.

元素

我們可以在 XML中看到的 - 元素一章的 元素是XML文件的組成部分。一個元件可以為XSD中定義如下:

<xs:element name="x" type="y"/>

定義型別

您可以定義下列方式XML架構元素:

簡單的型別 - 簡單型元件被用來只在文字的上下文。一些預定義的簡單型別有:XS:整數,XS:布林,XS:字串,XS:日期。例如:

<xs:element name="phone_number" type="xs:int" />

複雜型別 - 複雜型別可以包含其他元素定義。這使您可以指定哪些子元素的元素可以包含和你的XML文件中提供了一些結構。例如:

<xs:element name="Address">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name" type="xs:string" />
	    <xs:element name="company" type="xs:string" />
            <xs:element name="phone" type="xs:int" /> 
        </xs:sequence> 
    </xs:complexType>
</xs:element> 

在上面的例子中,地址元素是由子元素。這是一個容器,其他與LT; XS:元素和GT;定義,允許構建部件的簡單分層結構的XML文件中.

全域性型別 - 隨著全球性的型別,你可以定義你的檔案,可以使用所有其他參照在一個單一的型別。例如,假設你想推廣的人員和公司對公司的地址不同,在這種情況下,您可以定義如下的一般型別:

<xs:element name="AddressType">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="name" type="xs:string" />
	    <xs:element name="company" type="xs:string" />
        </xs:sequence> 
    </xs:complexType>
</xs:element> 

現在讓我們用這種型別在我們的例子如下:

<xs:element name="Address1">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="address" type="AddressType" />
	    <xs:element name="phone1" type="xs:int" /> 
        </xs:sequence> 
    </xs:complexType>
</xs:element> 
<xs:element name="Address2">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="address" type="AddressType" />
	    <xs:element name="phone2" type="xs:int" /> 
        </xs:sequence> 
    </xs:complexType>
</xs:element> 

而不必定義名稱,該公司兩次(一次在地址1,一次用於地址2,我們現在有一個單一的定義。如果你決定新增“郵編”元素的地址,你需要將它們新增在一個地方.

屬性

在XSD屬性提供了一個元素中的額外資訊。屬性具有名稱和型別屬性,如下所示:

<xs:attribute name="x" type="y"/>