如何定義XSD并在XML中使用XSD
同時XSD可以對XML中的格式進行限制,當限制失敗時給出提示。
下面以下使用VS2010為平台進行示範。
1.建立一個項目,然後在項目中添加xml架構檔案(.xsd結尾的檔案),本示例是建立一個網站,在網站中建立項XML架構檔案,字尾是.xsd,命名為XMLSchema2.xsd
2.平台自動生成如下内容:
其中xmlns在使用XML引入XSD檔案時比較重要。
3.現在開始定義XSD
<?xmlversion="1.0"encoding="utf-8"?>
<xs:schemaid="XMLSchema2"
targetNamespace="http://tempuri.org/XMLSchema2.xsd"
elementFormDefault="qualified"
xmlns="http://tempuri.org/XMLSchema2.xsd"
xmlns:mstns="http://tempuri.org/XMLSchema2.xsd"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
<xs:elementname="通訊錄">
<xs:complexType>
<xs:sequence>
<xs:elementref="記錄"maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:elementname="記錄">
<xs:elementref="姓名"/>
<xs:elementref="關系"/>
<xs:elementref="工作機關"/>
<xs:elementref="職位"/>
<xs:elementref="電話"/>
<xs:elementref="手機"/>
<xs:elementref="電子郵件"/>
<xs:attributename="編号"use="required">
<xs:simpleType>
<xs:restrictionbase="xs:decimal"/>
</xs:simpleType>
<!--說明編号屬性的類型:必須為整數-->
</xs:attribute>
<xs:elementname="姓名">
<xs:restrictionbase="xs:string"/>
<!--補充姓名的類型:字元串-->
<xs:elementname="關系">
<xs:restrictionbase="xs:string">
<xs:enumerationvalue="朋友"/>
<xs:enumerationvalue="同僚"/>
<xs:enumerationvalue="親屬"/>
<xs:enumerationvalue="一般"/>
</xs:restriction>
<!--補充關系的類型:必須為朋友、同僚、親屬、一般中的一種,不能重複-->
<xs:elementname="工作機關">
<!--補充工作機關的類型:字元串-->
<xs:elementname="職位">
<!--補充職位的類型:字元串-->
<xs:elementname="電話">
<xs:patternvalue="\d{3}-\d{8}"></xs:pattern>
<!--補充電話的類型:按照形式“區号-号碼”表示,其中區号占3位,号碼占8位-->
<xs:elementname="手機">
<xs:restrictionbase="xs:decimal">
<xs:patternvalue="\d{7,12}"/>
<!--補充手機的類型:必須為數字,長度介于7-12位之間-->
<xs:elementname="電子郵件">
<xs:patternvalue="^\w+((-\w+)|(\.\w+))*\@[A-Za-z0-9]+((\.|-)[A-Za-z0-9]+)*\.[A-Za-z0-9]+$"/>
<!--補充電子郵件的類型:形如“郵件名@域名”-->
</xs:schema>
“<xs:pattern”節點下的value支援正規表達式來驗證。
4.接下來在XML中引入XSD檔案,對XML的節點輸入值進行限制
5.建立一個XML檔案,并命名為XMLFile2.xml
平台隻生成一行代碼。
6.添加對XSD檔案的引用
一個XSD必定隻有一個根結點,是以,此處将根結點也寫于頭部。
添加兩個屬性:
xmlns作為XSD所在的命名空間
xmlns:xsi作為本XML檔案的命名空間,即XSD的一個執行個體(instance)。
7.開始編寫XML檔案
8.輸入<,發現它自動跳出可選的節點
這個就是XSD的作用之一。
9.繼續輸入,直到電話節點
提示模式限制失敗。這是XSD的作用之二。
實際上,XSD是這樣定義的:
10.改到“區号-号碼”的3+8形式,錯誤提示消失
11.同理,對于郵箱位址
12.改成正确形式
13.完畢
龍騰一族至尊龍騎