XML - Schema之資料型別擴充套件
一、定義
<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
targetNamespace="http://www.xilen.com/customer" xmlns:customer="http://www.xilen.com/customer">
<!-- 定義當前名稱空間的根元素customer -->
<element name="customer" type="customer:customerType"/>
<complexType name="customerType"> <!-- 定義customer的資料型別 -->
<sequence>
<element name="name" type="customer:nameType"/> <!-- 定義customer的name子元素,資料型別引用nameType的定義 -->
<element name="address" type="customer:addressType"/><!-- 定義customer的address子元素,資料型別引用nameType的定義 -->
<element name="extName" type="customer:extNameType"/> <!-- 擴充套件後的元素 -->
<element name="extAddress" type="customer:extAddressType"/> <!-- 擴充套件後的元素 -->
</sequence>
</complexType>
<simpleType name="nameType"> <!-- 定義Name -->
<restriction base="string">
<pattern value="[a-zA-Z][_a-zA-Z0-9]*" /> <!-- 定義正則來規範名稱 -->
<minLength value="3" /> <!-- 定義最小長度 -->
<maxLength value="18" /> <!-- 定義最大長度 -->
</restriction>
</simpleType>
<complexType name="addressType"> <!-- 定義address的資料型別 -->
<sequence>
<element name="code" type="customer:codeType" /> <!-- 定義address的code子元素,資料型別引用codeType的定義 -->
<element name="info" type="customer:infoType"/> <!-- 定義address的info子元素,資料型別引用infoType的定義 -->
</sequence>
</complexType>
<simpleType name="codeType"> <!-- 定義Code -->
<restriction base="string"> <!-- 定義限定條件,基於string的型別 -->
<pattern value="[0-9]*"/>
<length value="6"/> <!-- 定義最小長度 -->
</restriction>
</simpleType>
<simpleType name="infoType" > <!-- 定義Info的型別 -->
<restriction base="string"> <!-- 定義限定條件,基於string的型別 -->
<minLength value="0"/> <!-- 定義最小長度 -->
<maxLength value="255"/> <!-- 定義最大長度 -->
</restriction>
</simpleType>
<!-- - - - - - - - - - - - - - - - - - - 分隔線 - - - - - - - - - - - - - - - - - -->
<!-- 對複雜型別addressType進行擴充套件,新增note子元素 -->
<complexType name="extAddressType">
<complexContent>
<extension base="customer:addressType">
<sequence>
<element name="note" type="string"/>
</sequence>
</extension>
</complexContent>
</complexType>
<!-- 對簡單型別nameType進行擴充套件,新增id屬性 -->
<complexType name="extNameType">
<simpleContent>
<extension base="customer:nameType">
<attribute name="id" type="string"/>
</extension>
</simpleContent>
</complexType>
</schema>
三、使用
<?xml version="1.0" encoding="UTF-8"?>
<customer xmlns="http://www.xilen.com/customer" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.xilen.com/customer ext_customer.xsd">
<name>Tom</name>
<address>
<code>100000</code>
<info>BeiJing</info>
</address>
<extName id="extId-0001">ExtTom</extName> <!-- 新增了Id屬性 -->
<extAddress>
<code>100000</code>
<info>BeiJing</info>
<note>Home</note> <!-- 新增了note子元素 -->
</extAddress>
</customer>
相關文章
- XML - Schema之資料型別重用XML資料型別
- java資料型別擴充套件Java資料型別套件
- Spring系列-XML schema擴充套件機制SpringXML套件
- Spring 中的 XML schema 擴充套件機制SpringXML套件
- (interbase之七) 使用域擴充套件interbase的資料型別 (轉)套件資料型別
- XML Schema和XML DTD的資料型別比較XML資料型別
- ES6各大資料型別的擴充套件大資料資料型別套件
- 緣起 Dubbo ,講講 Spring XML Schema 擴充套件機制SpringXML套件
- 聊聊 Spring 的 XML Schema 擴充套件機制的使用方式SpringXML套件
- Oracle 12C 新特性之擴充套件資料型別(extended data type)Oracle套件資料型別
- XML Schema 字串資料型別及約束詳解XML字串資料型別
- 數值的擴充套件方法以及新增資料型別BigInt套件資料型別
- GBASE觀察:擴充套件分析型資料庫套件資料庫
- XML 實體擴充套件攻擊XML套件
- Chrome瀏覽器擴充套件開發系列之四:Browser Action型別的Chrome瀏覽器擴充套件Chrome瀏覽器套件型別
- Chrome瀏覽器擴充套件開發系列之五:Page Action型別的Chrome瀏覽器擴充套件Chrome瀏覽器套件型別
- 大資料——Scala擴充套件大資料套件
- 前端進階(11) – js 資料結構型別擴充套件:immutable-js前端JS資料結構型別套件
- 資料塊、資料擴充套件、段套件
- Chrome瀏覽器擴充套件開發系列之八:Chrome擴充套件的資料儲存Chrome瀏覽器套件
- 【12c】擴充套件資料型別(Extended Data Types)-- MAX_STRING_SIZE套件資料型別
- 資料檢索擴充套件包套件
- 擴充套件資料檔案大小套件
- C# Enum列舉型別操作擴充套件類C#型別套件
- ASP.NET Core擴充套件庫之Http通用擴充套件ASP.NET套件HTTP
- Scala由類的動態擴充套件想到型別類套件型別
- kotlin 擴充套件(擴充套件函式和擴充套件屬性)Kotlin套件函式
- PHP 高效能 Excel 擴充套件 1.2.8 釋出,檔案讀取資料型別可控!PHPExcel套件資料型別
- ignite系列之20-資料來源擴充套件GaussDB套件
- [譯] 論資料流的擴充套件性套件
- ehcarts擴充套件優秀的資料表套件
- Oracle行資料擴充套件方法總結Oracle套件
- 回滾段擴充套件資料檔案套件
- WCF擴充套件:行為擴充套件Behavior Extension套件
- INFORMIX表的預設初始擴充套件、下一個擴充套件資料塊以及一個表允許的最大擴充套件數。ORM套件
- Dubbo系列之 (一)SPI擴充套件套件
- DOM擴充套件之HTML5套件HTML
- PHP 操作 Redis 之 phpredis 擴充套件PHPRedis套件