XML的約束(schema)


XML Schema也是一種用於定義和描述XML文檔結構與內容的模式語言,其出現是為了克服DTD的局限性
  XML Schema符合XML語法結構
  DOM、SAX等XML API很容易解析出XML Schema文檔中的內容
  一個XML中個可以有多個schema,多個Schema使用名稱空間(類似於Java的包名)進行區分
  XML Schema比XML DTD支持更多的數據類型,並支持用戶自定義新的數據類型
  XML Schema定義約束的能力非常強大,可以對XML實例文檔做出細致的語義限制
  XML Schema不能像DTD一樣定義實體,比DTD更復雜,但XML Schema現在已經是w3c組織的標准,正逐步取代DTD
后綴名為:*.xsd,必須有一個<schema>根節點
  屬性
    xmlns="http://www.w3.org/2001/XMLSchema"
      表示當前xml文件是一個約束文件
    targetNamespace="http://www.waykw.com/20160214"
      使用schema約束文件,直接通過這個地址引入約束文件
    elementFormDefault="qualified"
  語法
    (1)有多少個元素就寫多少個<element name="元素名"></element>
    (2)元素是復雜的還是簡單的
      復雜元素:
        <complexType>
          <sequence>
            子元素
          </sequence>
        </complexType>
      簡單元素寫在復雜元素中:
1 <complexType>
2     <sequence>
3         <element name="name" type="string"></element>
4         <element name="age" type="int"></element>
5     </sequence>
6 </complexType>
        All:表示只能出現一次
        Choice:只能出現其中的一個
        Sequence:元素按照順序出現
        maxOccurs="unbounded":表示出現次數沒有限制
1 <sequence>
2     <element name="name" type="string"maxOccurs="unbounded"></element>
3 </sequence>
        <any></any>:表示任意元素
        定義屬性(必須是復雜元素)
          寫在</complexType>之前
          <attribute name="p1" type="string"  use="required"></attribute>
            name:屬性名
            type:屬性值類型
            use:屬性約束,optional可選,required必須
    (3)在xml中的根元素加入屬性
      xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 在末尾加入-instance
        表示xml是一個被約束文件
      xmlns="tartgetNamespace"
        schema約束文檔中的targetNamespace
      xsi:schemaLocation="tartgetNamespace schema文件路徑"
        schema約束文檔的位置
    (4)引入多個schema文件,可以給每個約束取一個別名
      xmlns:別名="schema文件路徑"
      這樣使用另一個schema文件中的約束時就使用<別名:元素名></別名:元素名>


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM