天天看點

XML Schema限制

schema規範中:

    1. namespace : schema檔案的辨別屬性,相當于id,每個schema檔案需要有一個唯一的namespace值;

    2. targetNameSpace :指定目前schema檔案的namespace值,它的值是一個url(很有可能不存在);

    3. xmlns :引入一個schema限制,它的值為一個schema的namespace值

            屬性? : 用xmlns屬性

            屬性值: 對應的schema檔案的id(namespace值)

    4.schemaLocation:如果引入的schema不是w3c組織定義,必須指定schema檔案的位置;

    5.element :定義标簽(常用類型:string,decimal,integer,boolean,date,time)

    6.elementFormDefault:控制元素。有兩個取值:"qualified"-在XML文檔中使用局部元素時,必須使用限定短名作為字首;unqualified-在XML文檔中使用局部元素時,可以省略限定短名;

    7.attributeFormDefault:控制屬性的。用法與elementFormDefault一樣;

    8.如果引入了N個限制, 需要給n-1個取别名(如下:xsd為w3c限制的别名);

複雜類型:一個元素如有屬性或者包含子元素,那麼這個元素就是複雜類型。複雜類型使xsd:complexType定義。複雜類型要麼具有簡單内容,要麼具有複雜内容。内容是指在開始标簽和結束标簽之間的字元資料和子元素。簡單内容是指内容隻具有字元資料沒有子元素,簡單内容是用xsd:simpleContent元素來定義(簡單内容要有屬性,否則等同于簡單類型)。除此之外的就是複雜内容,使用xsd:complexContent來定義。

      xsd:attribute元素的use、default、fixed屬性

use屬性訓示xsd:attribute元素是否需要出現,其有效值為:optional(可選的,use屬性的預設值)、prohibited(禁止使用屬性)、required(屬性是必須的)。對全局聲明的屬性不能使用use屬性。

 例子:book.xsd

  book.xml

派生複雜類型--擴充

      當從簡單類型或具有簡單内容的複雜類型派生複雜類型時(注意:簡單内容直接或間接派生出來的複雜類型也必須是簡單内容,簡單内容不能派生複雜内容),使用xs:simpleContent元素,如果是擴充派生,使用xs:extension元素,如果是限制派生,使用xs:restriction元素。

 1.擴充簡單内容

        擴充簡單内容可以從簡單類型或具有簡單内容的複雜類型擴充。由于不能通過擴充簡單内容來得到複雜内容,是以對簡單内容的擴充隻能是添加新的屬性。

 employee.xsd (标簽employee屬性number擴充了屬性birthdate)

 (1).從具有簡單内容的複雜類型擴充

  (2).從簡單類型擴充

  employee.xml

2.擴充純元素内容

       從純元素内容的複雜類型擴充,我們可以在基類型的内容模型最後添加新的與元素或屬性。模式處理器會把基類型的内容模型和新增的内容模型合并到一個sequence中。注意不能對一個all組的基類型進行擴充添加新的元素(添加屬性是可以的)。

 fruit.xsd

  fruit.xml

3.擴充混合内容

     混合内容的擴充跟純元素的擴充類似,唯一的要求是派生類型也必須具有混合内容,也就是mixed=true。

 employee.xsd

4.擴充空内容

   從空内容類型擴充,派生類型可以具有純元素内容,也可以就混合内容。

  employee.xsd

restriction資料類型的限定:

XML Schema限制

 參考:http://blog.csdn.net/tuolingss/article/details/8541687