国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > XML > 正文

XML學習筆記(五)Schema語法之簡單類型

2024-09-05 20:54:45
字體:
來源:轉載
供稿:網友

首先簡單的說一下,Schema中的簡單類型(SimpleType)有三種:SimpleElement(簡單元素)、Attribute(屬性)和Restrictions(約束)。下面逐一介紹這幾種類型。
 

一、XSD SimpleElement

所謂SimpleElement是指不包含任何其他元素和屬性,只包含Text(元素間的內容)的元素。這里Text指代的不單單是文本(string),準確地說應該是數據,可以是Schema內置的數據類型的數據,也可以是我們自己創建的數據類型的數據。

定義一個SimpleElement

<xs:element name="xxx" type="yyy">
在這里再次提醒語法,XML是大小寫敏感的,屬性的值要用雙引號括起來。“xxx”是我們要定義的Element的名稱。“yyy”是這個Element的數據類型。XML Schema預定義的內置數據類型有如下一些:
“xs:string ”、“xs:decimal”、“xs:integer”、“xs:boolean”、“xs:date”、“xs:time”。
看一個例子,以下是一些在XML中出現的SimpleElement
<lastname>Refsnes</lastname>
<age>36</age>
<dateborn>1970-03-27</dateborn>
那么在Schema中應該作如下定義,注意Element名稱和數據類型的對應。
<xs:element name="lastname" type="xs:string"/>
<xs:element name="age" type="xs:integer"/>
<xs:element name="dateborn" type="xs:date"/>

Element的默認值和固定值

默認值是當Elment中沒有指定一個值時默認提供的值,使用default屬性給出。
<xs:element name="color" type="xs:string" default="red"/>
 
固定值同樣是自動給出的,但是XML的用戶不能再為Element指定值,使用fixed屬性給出。
<xs:element name="color" type="xs:string" fixed="red"/>

 

二、XSD Attribute

所有的Attribute都是作為簡單類型的。一個SimpleElement是不能有屬性的。如果一個Element包含有Attriute我們就認為它看作是一個復雜類型(Complex Type)。雖然Attribute不會單獨的出現,但我們仍將它作為一種SimpleType在這里介紹

定義一個Attribute

<xs:attribute name="xxx" type="yyy"/>
“xxx”是Attribute的名稱。“yyy”是Attribute的數據類型。可以使用XML Schema定義的內置數據類型,如:“xs:string ”、“xs:decimal”、“xs:integer”、“xs:boolean”、“xs:date”、“xs:time”。
例如有如下一個Element,包含一個Attribute
<lastname lang="EN">Smith</lastname>
那么定義lang屬性的Schema語句應該如下:
<xs:attribute name="lang" type="xs:string"/>

Attribute的默認值和固定值

同樣可以使用default屬性和fixed屬性為Attrbute指定默認值和固定值。
默認值
<xs:attribute name="lang" type="xs:string" default="EN"/>
固定值
<xs:attribute name="lang" type="xs:string" fixed="EN"/>

可選和必需屬性

屬性默認是可選的(即可以不填)可以使用use屬性來指定屬性是必需的,如下:
<xs:attribute name="lang" type="xs:string" use="required"/>

三、XSD Restrictions(約束)

Restrictions是用來限制(或者說定義)Element或Attribute可接受值的。而對于Element的Restrictions通常又稱為Facets。
下面通過一些常見的約束例子來說明Restrictions的用法和語法。

數值型范圍限制

<xs:element name="age"><xs:simpleType>
<xs:restriction base="xs:integer">
<xs:minInclusive value="0"/>
<xs:maxInclusive value="120"/>
</xs:restriction>
</xs:simpleType></xs:element>
該約束定義age元素的值是整形而且值要在0到120之間。

枚舉限制

<xs:element name="car">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
這里約束了car的值是string,而且只能為“Audi”、“Golf”和“BMW”中的一個。
可以使用另一種寫法:
<xs:element name="car" type="carType"/>
<xs:simpleType name="carType">
<xs:restriction base="xs:string">
<xs:enumeration value="Audi"/>
<xs:enumeration value="Golf"/>
<xs:enumeration value="BMW"/>
</xs:restriction>
</xs:simpleType>
這種寫法的好處是,上面的Restriction不是定義在Element中的,可以被其他的Element很方便的調用。

使用正則表達式(RegularExpression)約束

<xs:element name="letter">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:pattern value="[a-z]"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
這里<xs:pattern>的value屬性的值是一個正則表達式正則表達式的語法則不再本文介紹的范圍。使用RegularExpression你可以規定任何格式的string約束。

空格字符(Whitespace Characters)約束

<xs:element name="address">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:whiteSpace value="preserve"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
以上例子對address中的所有空格字符進行保留。關鍵是value="preserve"。XML語法本來就是保留空格的。
當值為“replace”時
XML processer會用空間來代替所有的空格字符。
當值為“collapse”時
會將連續的空格合并成一個。

長度約束

<xs:element name="password">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:length value="8"/>
</xs:restriction>
</xs:simpleType>
</xs:element>
以上例子限定了password元素的長度為8。當然也可以使用 <xs:minLength value="?"/>和<xs:maxLength value="?"/>來限定最長最短值。

 

 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 建平县| 江都市| 特克斯县| 武宣县| 噶尔县| 霞浦县| 罗江县| 囊谦县| 临洮县| 朝阳县| 马边| 永平县| 花莲市| 左贡县| 襄城县| 林口县| 东丽区| 松潘县| 同德县| 雅江县| 绥德县| 岑溪市| 崇礼县| 原阳县| 贡觉县| 湾仔区| 濉溪县| 竹山县| 开江县| 盐津县| 曲靖市| 永善县| 布拖县| 德州市| 钦州市| 兴和县| 锦屏县| 临泉县| 雅安市| 桃园县| 乌拉特前旗|