
- XML 教程
- XML - 首頁
- XML - 概述
- XML - 語法
- XML - 文件
- XML - 宣告
- XML - 標籤
- XML - 元素
- XML - 屬性
- XML - 註釋
- XML - 字元實體
- XML - CDATA 區段
- XML - 空格
- XML - 處理
- XML - 編碼
- XML - 驗證
- XML 有用資源
- XML - 快速指南
- XML - 有用資源
XML - 模式
XML 模式通常稱為XML 模式定義 (XSD)。它用於描述和驗證 XML 資料的結構和內容。XML 模式定義了元素、屬性和資料型別。模式元素支援名稱空間。它類似於資料庫模式,描述資料庫中的資料。
語法
您需要在 XML 文件中宣告一個模式,如下所示:
示例
以下示例演示瞭如何使用模式:
<?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:integer、xs:boolean、xs:string、xs:date。例如:
<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>
在上面的示例中,Address 元素包含子元素。它是其他<xs:element>定義的容器,允許在 XML 文件中構建簡單的元素層次結構。
全域性型別
使用全域性型別,您可以在文件中定義單個型別,所有其他引用都可以使用該型別。例如,假設您想將person和company泛化到公司的不同地址。在這種情況下,您可以定義一個通用型別,如下所示:
<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>
不必為Address1和Address2分別定義兩次名稱和公司,我們現在有一個定義。這使得維護更簡單,即,如果您決定向地址新增“Postcode”元素,則只需在一個地方新增即可。
屬性
XSD 中的屬性在元素內提供額外資訊。屬性具有名稱和型別屬性,如下所示:
<xs:attribute name = "x" type = "y"/>
廣告