<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Xml Schema (xsd) 的寫(xiě)法

    Posted on 2007-08-23 16:07 Exiler 閱讀(2083) 評(píng)論(0)  編輯  收藏 所屬分類: XML

    [轉(zhuǎn)貼自 http://www.cnblogs.com/John-zhaohui]

    Xml Schema的用途

    1  定義一個(gè)Xml文檔中都有什么元素

    2  定義一個(gè)Xml文檔中都會(huì)有什么屬性

    3  定義某個(gè)節(jié)點(diǎn)的都有什么樣的子節(jié)點(diǎn),可以有多少個(gè)子節(jié)點(diǎn),子節(jié)點(diǎn)出現(xiàn)的順序

    4  定義元素或者屬性的數(shù)據(jù)類型

    5  定義元素或者屬性的默認(rèn)值或者固定值

    Xml Schema的根元素:

    <?xml version="1.0"?>

    <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" 表示數(shù)據(jù)類型等定義來(lái)自w3

    targetNamespace="http://www.w3schools.com" 表示文檔中要定義的元素來(lái)自什么命名空間

    xmlns="http://www.w3schools.com"表示此文檔的默認(rèn)命名空間是什么

    elementFormDefault="qualified"> 表示要求xml文檔的每一個(gè)元素都要有命名空間指定

    ……定義主體部分……

    </xs:schema>

    如何定義一個(gè)簡(jiǎn)單元素

    <xs:element  此處表示要定義一個(gè)元素

    name=”color” 表示要定義元素的名稱

    type=”xs:string”  表示要定義元素的數(shù)據(jù)類型

    default=”red” 表示定義元素的默認(rèn)值

    fixed=”red”/> 表示要定義元素的固定值,此元素只可以取“red”值

    以上定義了一個(gè)簡(jiǎn)單元素,元素實(shí)例:<color>red</color>

    如何定義一個(gè)屬性

    <xs:attribute

             name=”birthday” 表示要定義屬性的名字

             type=”xs:date” 表示要定義屬性的數(shù)據(jù)類型

             default=”2001-01-11表示要定義屬性的默認(rèn)值

             fixed=”2001-01-11表示要定義屬性的固定值

             use=”required”/> 表示此屬性是否是必須指定的,即如果不指定就不符合Schema,默認(rèn)沒(méi)有use=”required”屬性表示屬性可有可無(wú)

    如何定義元素或者屬性值的限制

    1.最大值最小值限制

    <xs:element name="age">

    <xs:simpleType>

    <xs:restriction base="xs:integer">

    <xs:minInclusive value="0"/> 大于等于0<xs: minExclusive>表示最小值但是不包括指定值

     <xs:maxInclusive value="120"/> 小于等于120<xs: maxExclusive>

    </xs:restriction>

    </xs:simpleType>

    </xs:element>

    2.枚舉限制,指只能在指定的幾個(gè)值中取值

             <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>

    3.模式(pattern)限制 ,指字符串的格式必須滿足制定的匹配模式

    例子

    說(shuō)明

    <xs:element name="letter">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="[a-z]"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示只能在小寫(xiě)字母中取一個(gè)值

    <xs:element name="initials">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="[A-Z][A-Z][A-Z]"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是三個(gè)大寫(xiě)字母

    <xs:element name="initials">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="[a-zA-Z][a-zA-Z][a-zA-Z]"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是三個(gè)字母,可以是大寫(xiě)或小寫(xiě)的

    <xs:element name="choice">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="[xyz]"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是xyz中的一個(gè)

    <xs:element name="prodid">

    <xs:simpleType>

      <xs:restriction base="xs:integer">

        <xs:pattern value="[0-9][0-9][0-9][0-9][0-9]"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示數(shù)字的范圍是0-99999

    <xs:element name="letter">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="([a-z])*"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是0或者多個(gè)小寫(xiě)字符組成的序列

    <xs:element name="letter">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="([a-z][A-Z])+"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是多個(gè)字母。

    <xs:element name="gender">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="male|female"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示是male或者female中的一個(gè)

    <xs:element name="password">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:pattern value="[a-zA-Z0-9]{8}"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示必須是8個(gè)字母數(shù)字字符

    4.字符串長(zhǎng)度的限制

    <xs:element name="password">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:length value="8"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    長(zhǎng)度必須是8

    <xs:element name="password">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:minLength value="5"/>

        <xs:maxLength value="8"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    表示長(zhǎng)度在5-8之間

    6 對(duì)于空白字符的限制

    示例

    說(shuō)明

    <xs:element name="address">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:whiteSpace value="preserve"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    保留原樣,表示xml處理器不會(huì)移除或者替換任何空白字符

    <xs:element name="address">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:whiteSpace value="replace"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    指回車,換行,Tab都會(huì)被替換成空格處理

    <xs:element name="address">

    <xs:simpleType>

      <xs:restriction base="xs:string">

        <xs:whiteSpace value="collapse"/>

      </xs:restriction>

    </xs:simpleType>

    </xs:element>

    去掉多于一個(gè)空格,和html中處理方式相同

     

    如何定義復(fù)雜類型

    復(fù)雜類型是指定義元素中包含屬性或者子元素的類型

    1 定義只包含子元素的復(fù)雜類型

    <xs:element name="person">

      <xs:complexType>

        <xs:sequence>

          <xs:element name="firstname" type="xs:string"/>

          <xs:element name="lastname" type="xs:string"/>

        </xs:sequence>

      </xs:complexType>

    </xs:element>

    2 定義只包含屬性的復(fù)雜類型

    <xs:element name="product" type="prodtype"/>

    <xs:complexType name="prodtype">

      <xs:attribute name="prodid" type="xs:positiveInteger"/>

    </xs:complexType>

    3 定義只包含內(nèi)容的復(fù)雜類型

    <xs:element name="shoesize" type="shoetype"/>

    <xs:complexType name="shoetype">

      <xs:simpleContent>

        <xs:extension base="xs:integer">

          <xs:attribute name="country" type="xs:string" />

        </xs:extension>

      </xs:simpleContent>

    </xs:complexType>

    4 定義包含內(nèi)容和子元素混合的復(fù)雜類型

    <xs:element name="letter">

      <xs:complexType mixed="true">

        <xs:sequence>

          <xs:element name="name" type="xs:string"/>

          <xs:element name="orderid" type="xs:positiveInteger"/>

          <xs:element name="shipdate" type="xs:date"/>

        </xs:sequence>

      </xs:complexType>

    </xs:element>

    以上定義對(duì)應(yīng)的Xml

    <letter>

    Dear Mr.<name>John Smith</name>.

    Your order <orderid>1032</orderid>

    will be shipped on <shipdate>2001-07-13</shipdate>.

    </letter>

    5 定義包含屬性和子元素的復(fù)雜類型

     

    使用指示器

    Xsd中的指示器包括

    1 順序指示器

    1 All

    指示子元素可以以任何順序出現(xiàn),并且每一個(gè)元素都必須出現(xiàn)一次

    <xs:element name="person">

      <xs:complexType>

        <xs:all>

          <xs:element name="firstname" type="xs:string"/>

          <xs:element name="lastname" type="xs:string"/>

        </xs:all>

      </xs:complexType>

    </xs:element>

    2 Choice

    指示子元素中可以出現(xiàn)一個(gè)或者另一個(gè)

    <xs:element name="person">

      <xs:complexType>

        <xs:choice>

          <xs:element name="employee" type="employee"/>

          <xs:element name="member" type="member"/>

        </xs:choice>

      </xs:complexType>

    </xs:element>

    3 Sequence

    指示子元素必須按照順序出現(xiàn)

    <xs:element name="person">

      <xs:complexType>

        <xs:sequence>

          <xs:element name="firstname" type="xs:string"/>

          <xs:element name="lastname" type="xs:string"/>

        </xs:sequence>

      </xs:complexType>

    </xs:element>

    2 出現(xiàn)次數(shù)指示器minOccursmaxOccurs

    <xs:element name="person">

      <xs:complexType>

        <xs:sequence>

          <xs:element name="full_name" type="xs:string"/>

          <xs:element name="child_name" type="xs:string"

          maxOccurs="10" minOccurs="0"/>

        </xs:sequence>

      </xs:complexType>

    </xs:element>

    3 組指示器(group Indicators

    用來(lái)定義相關(guān)的一組元素

    <xs:group name="persongroup">

      <xs:sequence>

        <xs:element name="firstname" type="xs:string"/>

        <xs:element name="lastname" type="xs:string"/>

        <xs:element name="birthday" type="xs:date"/>

      </xs:sequence>

    </xs:group>

    <xs:element name="person" type="personinfo"/>

    <xs:complexType name="personinfo">

      <xs:sequence>

        <xs:group ref="persongroup"/>

        <xs:element name="country" type="xs:string"/>

      </xs:sequence>

       </xs:complexType>

    用來(lái)定義一組相關(guān)的屬性

    <xs:attributeGroup name="personattrgroup">

      <xs:attribute name="firstname" type="xs:string"/>

      <xs:attribute name="lastname" type="xs:string"/>

      <xs:attribute name="birthday" type="xs:date"/>

    </xs:attributeGroup>

    <xs:element name="person">

      <xs:complexType>

        <xs:attributeGroup ref="personattrgroup"/>

      </xs:complexType>

    </xs:element>

    Any關(guān)鍵字

    表示可以有任意元素

    <xs:element name="person">

      <xs:complexType>

        <xs:sequence>

          <xs:element name="firstname" type="xs:string"/>

          <xs:element name="lastname" type="xs:string"/>

          <xs:any minOccurs="0"/>

        </xs:sequence>

      </xs:complexType>

    </xs:element>

    anyAttribute關(guān)鍵字

    <xs:element name="person">

      <xs:complexType>

        <xs:sequence>

          <xs:element name="firstname" type="xs:string"/>

          <xs:element name="lastname" type="xs:string"/>

        </xs:sequence>

        <xs:anyAttribute/>

      </xs:complexType>

    </xs:element>

    substitutionGroup關(guān)鍵字

    表示某一個(gè)元素和另一個(gè)替代元素定義相同

    <xs:element name="name" type="xs:string"/>

    <xs:element name="navn" substitutionGroup="name"/>

    <xs:complexType name="custinfo">

      <xs:sequence>

        <xs:element ref="name"/>

      </xs:sequence>

    </xs:complexType><xs:element name="customer" type="custinfo"/>

    <xs:element name="kunde" substitutionGroup="customer"/>

    文中的例子都來(lái)自w3school.


    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     

    posts - 3, comments - 32, trackbacks - 0, articles - 3

    Copyright © Exiler

    主站蜘蛛池模板: 亚洲成人影院在线观看| 四虎一区二区成人免费影院网址| 久久久久久国产a免费观看黄色大片| 亚洲一区二区在线免费观看| 免费一级毛片无毒不卡| 久久久久亚洲AV成人无码网站 | 18禁男女爽爽爽午夜网站免费| 亚洲免费在线视频| 日韩精品人妻系列无码专区免费| 久久久久亚洲AV成人无码| 未满十八18禁止免费无码网站| 色婷婷六月亚洲婷婷丁香| 亚洲第一网站免费视频| 亚洲国产精品线观看不卡| 曰批全过程免费视频在线观看| 亚洲精品亚洲人成在线播放| 成年美女黄网站色大免费视频| 亚洲精品中文字幕| 国产免费人视频在线观看免费 | 免费一级毛片不卡在线播放| 鲁啊鲁在线视频免费播放| 亚洲日韩中文字幕日韩在线| 国产在线精品一区免费香蕉| 亚洲精品无码永久在线观看你懂的 | 久久久亚洲欧洲日产国码农村| 色猫咪免费人成网站在线观看| 亚洲精彩视频在线观看| 免费在线看v网址| 亚洲日韩国产一区二区三区在线 | 99久久久国产精品免费蜜臀| 亚洲欧洲精品久久| 成年人视频在线观看免费| 亚洲AV色无码乱码在线观看| 亚洲国产aⅴ综合网| 手机看片国产免费永久| 亚洲第一网站免费视频| 成人五级毛片免费播放| 免费激情网站国产高清第一页 | 精品无码人妻一区二区免费蜜桃| 亚洲国产成人手机在线电影bd | 久草视频在线免费|