1. 程式人生 > >XML學習之Xml Schema:三、自定義簡單型別--facet

XML學習之Xml Schema:三、自定義簡單型別--facet

         要定義新的簡單型別,只能從現有的簡單型別派生。對於簡單型別只有限制派生沒有擴充套件派生,通過簡單派生得到的新的簡單型別是其原來型別的子集。Xml Schema推薦了標準的12個面(facet)來限制約束。要定義簡單型別,使用xs:simpleType元素,要對原型別進行限制,使用xs:restriction元素。

         約束型別的12個面。

類別
範圍 minInclusive、maxInclusive、minExclusive、maxExclusive
長度 length、minLength、maxLength
精度 totalDigits、fractionDigits
列舉 enumeration
模式匹配 pattern
空白處理 whiteSpace

        範圍說明

        在實際應用中,往往需要把某個值限定在一定的範圍內,如僱員的年齡在18到60之間,分數在0到100之間等。minInclusive(最小包含,相當於>=)、maxInclusive(最大包含,相當於<=)、minExclusive(最小不包含,相當於>)、maxExclusive(最大不包含,相當於<)。這4個範圍面只能適用於整數、日期、時間型別。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="score" type="scoreType"/>
	<xs:simpleType name="scoreType">
		<xs:restriction base="xs:integer">
			<xs:minInclusive value="0"/>
			<xs:maxInclusive value="100"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

        長度說明

        限制值的長度,比如需要限制密碼的長度為8位,使用者名稱的長度為6到20位。length:內容長度、minLength:最小長度、maxLength:最大長度。主要使用的型別為字元型、QName型、anyURI型。不可以適用於日期、時間、數字和boolean。length面不能與minLength、maxLength面一起使用。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="username">
		<xs:simpleType>
			<xs:restriction base="xs:string">
				<xs:minLength value="6"/>
				<xs:maxLength value="18"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
	<xs:element name="password" type="pwType"/>
	<xs:simpleType name="pwType">
		<xs:restriction base="xs:string">
			<xs:length value="8"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

        精度說明

        在某些情況下,需要限定某個數的數字位數,比如支票上最大的單位是億,最小的單位是分。totalDigits:總數字、fractionDigits:分數數字(小數點後面的)。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="check" type="checkType"/>
	<xs:simpleType name="CheckType">
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="11"/>
			<xs:fractionDigits value="2"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

         列舉說明

         經常將某個值限定在一組可選的值之中,比如:性別要在“男”和“女”之間選擇。enumeration:列舉。enumeration面可以在除boolean以後的其他型別中使用。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="sex" type="sexType"/>
	<xs:simpleType name="sexType">
		<xs:restriction base="xs:string">
			<xs:enumeration value="Male"/>
			<xs:enumeration value="FeMale"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

        模式匹配

        有時需要複雜的格式約束,比如需要對郵件地址的格式進行檢查。可以使用pattern面進行正則表示式的限制。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="zipCode">
		<xs:simpleType>
			<xs:restriction base="xs:token">
				<xs:pattern vlues="\d{6}"/>
			</xs:restriction>
		</xs:simpleType>
	</xs:element>
</xs:schema>

         空白處理

         whitespace的有效值為:preserve、replace、collapse。

        preserve:所有的空白都被保留

        replace:製表符、換行、回車都用一個空格進行替換,但連續的空格不被壓縮為一個空格。

        collapse:製表符、換行、回車被空格替換,連續的空格被壓縮為一個空格。

       固定面

       除了enumeration和pattern面外,其餘的面都有一個fixed屬性,預設為false。如果該值為true,那麼該面的值將被固定下來,其派生型別不能改變該面的值。

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
	<xs:element name="check" type="checkType"/>
	<xs:simpleType name="CheckType">
		<xs:restriction base="xs:decimal">
			<xs:totalDigits value="7" fixed="true"/>
			<xs:fractionDigits value="2" fixed="true"/>
		</xs:restriction>
	</xs:simpleType>
</xs:schema>

相關推薦

XML學習Xml Schema定義簡單型別--facet

         要定義新的簡單型別,只能從現有的簡單型別派生。對於簡單型別只有限制派生沒有擴充套件派生,通過簡單派生得到的新的簡單型別是其原來型別的子集。Xml Schema推薦了標準的12個面(facet)來限制約束。要定義簡單型別,使用xs:simpleType元素,

HTML5學習五巢狀列表定義列表

<ul> <li>寵物</li> <ul> <li>貓</li

ROS學習路05編寫基於定義服務(.srv)進行通訊的節點

關鍵術語 服務檔案(.srv):服務檔案的副檔名是.srv,本質上是一個txt檔案,開發者可以在建立的服務檔案中自定義需要的服務格式,由於服務欄位中的欄位型別是來自其他功能包,因此需要在package.xml檔案及CMakeLists.txt檔案中包含定義

Android進階系列定義View音頻抖動動效

final rim 而是 開始 next draw img 點擊 syn 自定義動畫效果——音頻抖動效果 1.繪制一個矩形: 想要繪制一個矩形,繼承View,並重寫onDraw方法即可。復雜一點還可以重寫onMeasure方法和onLayout方法進行大小測量和位置測量。但

Android進階定義View手寫Loading動效

應該 ima outer list 初始 ffffff tar implement 旋轉角度 這是一個很簡單的動畫效果,使用屬性動畫即可實現,希望對讀者學習動畫能達到拋磚引玉的效果 一.自定義動畫效果——Loading效果 如上是我們需要做的一個Loading動畫。Loa

easyui 進階tree easyui 進階表單校驗定義校驗

前言 easyui是一種基於jQuery的使用者介面外掛集合,它為建立現代化,互動,JavaScript應用程式,提供必要的功能,完美支援HTML5網頁的完整框架,節省網頁開發的時間和規模。非常的簡單易學。 easyui中文網:http://www.jeasyui.net/ easyui官網:http:

Element Table常用設定排序定義序列列表彙總設定斑馬線

<style> .el-table .warning-row { background: oldlace; } .el-table .success-row { background: #f0f9eb; } </style&

Linux學習Shell基礎——Bash變數——使用者定義變數

1、什麼是變數 》變數是計算機記憶體的單元,其中存放的值可以改變。當shell指令碼需要儲存一些資訊時,如一個檔名或是一個數字,就把它存放在一個變數中。每個變數有一個名字,所以很容易引用它。使用變數可以儲存有用資訊,使得系統獲知使用者相關設定,變數也可以用於儲存暫時資訊。 2、變數設定規

easyui 進階表單校驗定義校驗

前言 easyui是一種基於jQuery的使用者介面外掛集合,它為建立現代化,互動,JavaScript應用程式,提供必要的功能,完美支援HTML5網頁的完整框架,節省網頁開發的時間和規模。非常的簡單易學。 今天我們來學習表單校驗以及如何自定義表單校驗 正文 一、從標記建立驗證框(vali

angularJS學習路(十八)---定義指令執行過程

angularJS中對指令的解析與執行過程是這樣的: ·      瀏覽器得到 HTML 字串內容,解析得到 DOM 結構。 ·      ng 引入,把 DOM 結構扔給 $compile 函式處理

SQL Server XML基礎學習--XML modify() 方法對 XML 資料中插入更新或刪除

/*------------------------------------------------------------------------------+ #| = : = : = : = : = : = : = : = : = : = : = : = : = :

Zabbix()高級應用--展示模版定義屬性測試實例

zabbixZabbix的高級應用1.展示接口: (1)graph: simple graph:每個Item對應的展示圖形; custom graph:創建一個融合了多個simple graph的單個graph; (2)screen: 把多個custom graph整合於一個屏幕進行展示; (3)

XML學習路(二)

req 方式 test 無符號 規範 內容 了解 實體 文本 DTD 一、什麽是DTD? DTD即Document Type Definition,文檔類型定義。 我們知道,XML的標簽可以自定義,不受任何約束。但有時侯,為了符合邏輯和業務需要,我們需要對XML文檔加以約束

十九python學習Django框架(二):請求URL路徑引數查詢字串請求體(表單,非表單)請求頭

一、請求 1.flask中,利用HTTP協議想伺服器傳參的幾種途徑 1.1 提取URL的特定部分,可以在伺服器端的路由中用正則表示式擷取: 如:/weather/2018 //前端傳送請求: $.ajax({ url:'http://www.baidu.com/

Android學習---(重回Java(03))資料型別資料型別強轉轉義字元邏輯運算子位運算子目運算子,簡單通俗教學

基本資料型別-數值型-整數型別 整數分為4個型別,byte、short、int、long,為什麼一個整數要劃分為這麼多型別呢,可能很多人知道,但也有人不知道,這裡還是講一下,其實就是因為它們在記憶體當

多執行緒學習(4)種實現Java多執行緒的方法ThreadCallable和Runable 的比較與區別

2018年10月03日 目錄 前言 前言 JVM允許應用程式併發執行多執行緒:最常用的是兩個方法:(1)基礎Thread類,重寫run()方法;(2)或實現Runnable 介面,實現介面的run()方法;(3)另外一種方法是:實現callable 介面

學習路-RabbitMQ(SpringBoot整合RabbitMQ

一:引入RabbitMQ的相關jar包: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-amqp

學習路-RabbitMQ(RabbitMQ的工作模式

RabbitMQ有以下幾種工作模式 : 1、Work queues 工作佇列 2、Publish/Subscribe 釋出訂閱模式 3、Routing 路由模式 4、Topics 萬用字元模式 5、Header 6、RPC 一:Work queues 工作佇列 work queues與

學習路-RabbitMQ(RabbitMQ的入門程式

1.建立maven工程 2.分別在兩個工程中匯入依賴 <dependency> <groupId>com.rabbitmq</groupId> <artifactId>amqp‐client</artifactId>

Ruby學習XML, XSLT 和 XPath使用方法

XML就是指可擴充套件標記語言(eXtensible Markup Language),標準通用標記語言的子集,一種用於標記電子檔案使其具有結構性的標記語言。它可以用來標記資料、定義資料型別,是一種允許使用者對自己的標記語言進行定義的源語言。 它非常適合全球資訊網傳輸,提供統一的方法來描述和交換