XML - Schema之資料型別重用
一、定義
<?xml version="1.0" encoding="UTF-8"?>
<!--
xmlns:xs="http://www.w3.org/2001/XMLSchema" :schema必須有的名稱空間,這裡別名為xs
targetNamespace="http://www.xilen.com/books" :當前schema的名稱空間
xmlns:tns="http://www.xilen.com/books" :引入的名稱空間,這裡表示引入當前這個schema,這裡別名為tns
-->
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.xilen.com/user" xmlns:tns="http://www.xilen.com/user">
<xs:element name="user" type="tns:userType"/> <!-- 定義根元素user -->
<xs:complexType name="userType"> <!-- 定義user的資料型別 -->
<xs:sequence>
<xs:element name="name" type="tns:nameType"/> <!-- 定義user的name子元素,資料型別引用nameType的定義 -->
<xs:element name="age" type="tns:ageType" /> <!-- 定義user的age元素,資料型別引用ageType的定義 -->
<xs:element name="sex" type="tns:sexType" /> <!-- 定義user的sex子元素,資料型別引用sexType的定義 -->
<xs:element name="roles" type="tns:rolesType" /> <!-- 定義user的roles子元素,資料型別引用rolesType的定義 -->
</xs:sequence>
<xs:attribute name="id" type="tns:idType"/> <!-- 定義user的屬性,資料型別引用idType的定義 -->
</xs:complexType>
<xs:complexType name="rolesType"> <!-- 定義roles的資料型別 -->
<xs:sequence maxOccurs="unbounded" minOccurs="0"> <!-- 定義roles的子元素的容量 -->
<xs:element name="role" type="tns:roleType" /> <!-- 定義roles的子元素,資料型別引用roleType的定義 -->
</xs:sequence>
</xs:complexType>
<xs:complexType name="roleType"> <!-- 定義role的資料型別 -->
<xs:sequence>
<xs:element name="name" type="tns:nameType" /> <!-- 定義role的name子元素,資料型別重用用nameType的定義 -->
<xs:element name="note" type="tns:noteType"/> <!-- 定義role的note子元素,資料型別引用noteType的定義 -->
</xs:sequence>
<xs:attribute name="id" type="tns:idType"/><!-- 定義role的id屬性,資料型別重用IdType的定義 -->
</xs:complexType>
<xs:simpleType name="idType"> <!-- 定義ID型別 -->
<xs:restriction base="xs:int"> <!-- 定義限定條件,基於int的型別 -->
<xs:minInclusive value="1" /> <!-- 最小值 -->
<xs:maxInclusive value="999999999" /> <!-- 最大值 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="nameType"> <!-- 定義Name -->
<xs:restriction base="xs:string">
<xs:pattern value="[a-zA-Z][_a-zA-Z0-9]*" /> <!-- 定義正則來規範名稱 -->
<xs:minLength value="3" /> <!-- 定義最小長度 -->
<xs:maxLength value="18" /> <!-- 定義最大長度 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="ageType"> <!-- 定義age的型別 -->
<xs:restriction base="xs:int"> <!-- 定義限定條件,基於int的型別 -->
<xs:minInclusive value="0" /><!-- 最小包含0 -->
<xs:maxExclusive value="150" /><!-- 最大不包含150 -->
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="sexType"> <!-- 定義sex的型別 -->
<xs:restriction base="xs:string"> <!-- 定義限定條件,基於string的型別 -->
<xs:enumeration value="MAN" /> <!-- 定義sex為列舉,只可以選擇其一 -->
<xs:enumeration value="WOMAN" />
<xs:enumeration value="OTHER" />
</xs:restriction>
</xs:simpleType>
<xs:simpleType name="noteType" > <!-- 定義note的型別 -->
<xs:restriction base="xs:string"> <!-- 定義限定條件,基於string的型別 -->
<xs:minLength value="0"/> <!-- 定義最小長度 -->
<xs:maxLength value="255"/> <!-- 定義最大長度 -->
</xs:restriction>
</xs:simpleType>
</xs:schema>
二、引用
<?xml version="1.0" encoding="UTF-8"?>
<!-- xmlns:user="http://www.xilen.com/user": 將引用的user.xsd別名為user -->
<user:user xmlns:user="http://www.xilen.com/user" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xilen.com/user user.xsd"
id="1">
<user:name>admin</user:name>
<user:age>25</user:age>
<user:sex>MAN</user:sex>
<user:roles>
<user:role id="1">
<user:name>System</user:name>
<user:note>Management System</user:note>
</user:role>
<user:role id="2">
<user:name>Order</user:name>
<user:note>Management Order</user:note>
</user:role>
</user:roles>
</user:user>
相關文章
- XML Schema 字串資料型別及約束詳解XML字串資料型別
- XML Schema 複雜元素型別詳解:定義及示例解析XML型別
- js資料型別之基本資料型別和引用資料型別JS資料型別
- 高效能MySQL (一):Schema與資料型別優化MySql資料型別優化
- Mysql 資料型別之整數型別MySQL 資料型別
- Python之資料型別Python資料型別
- NumPy之:資料型別資料型別
- XML Schema定義XML
- MySQL基礎之----資料型別篇(常用資料型別)MySql資料型別
- PHP 資料型別之檢視和判斷資料型別PHP資料型別
- 基本資料型別之字串資料型別字串
- 資料型別之字串篇資料型別字串
- js基本語法之 值型別(資料型別)(變數型別)JS資料型別變數
- Python基本資料型別之浮點型Python資料型別
- python基礎之資料型別Python資料型別
- NumPy之:資料型別物件dtype資料型別物件
- php資料型別之陣列PHP資料型別陣列
- Go 筆記之資料型別Go筆記資料型別
- Python學習之資料型別Python資料型別
- [java基礎]之資料型別Java資料型別
- python-資料型別之字典Python資料型別
- Python基本資料型別之整型Python資料型別
- 玩轉 JavaScript 之資料型別JavaScript資料型別
- 01.javascript之資料型別JavaScript資料型別
- JS專題之資料型別和型別檢測JS資料型別
- 資料型別: 資料型別有哪些?資料型別
- Go 基礎之基本資料型別Go資料型別
- Presto原始碼分析之資料型別REST原始碼資料型別
- python-資料型別之set集合Python資料型別
- JavaScript學習之資料型別(1)JavaScript資料型別
- Python基本資料型別之元組Python資料型別
- 1.1.4 python基本資料型別之字典Python資料型別
- 1.1.5 python基本資料型別之集合Python資料型別
- 區別值型別資料和引用型別資料型別
- python序列資料型別之序列資料的基本操作Python資料型別
- ClickHouse資料庫資料定義手記之資料型別資料庫資料型別
- 資料型別,型別轉換資料型別
- Java基礎語法之資料型別Java資料型別
- 前端基礎之JavaScript的資料型別前端JavaScript資料型別