XML学习笔记 第二记
                                                            生活随笔
收集整理的這篇文章主要介紹了
                                XML学习笔记 第二记
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.                        
                                
                            
                            
                            2012-08-07
 
1、XML實體可分為普通內部外部實體和內部外部參數實體。普通內部外部實體用在XML文檔中,而內部外部參數實體用在DTD聲明中。
 
2、DTD聲明普通內部實體語法:<!ENTITY 實體名 實體值>,調用時用格式“&實體名;”。
 
3、DTD聲明普通外部實體語法:<!ENTITY 實體名 SYSTEM "URI/URL">,表示使用URI或者URL指向文件的全部內容替換實體名,比較少用,調用時用格式“&實體名;”。
 
4、DTD聲明內部參數實體語法:<!ENTITY %實體名 實體值>,調用時用格式“%實體名;”。
 
5、DTD聲明外部參數實體語法:<!ENTITY %實體名 SYSTEM "URI/URL">,表示使用URI或者URL指向文件的全部內容替換實體名,比較少用,調用時用格式“%實體名;”。
 
6、XML的命名空間,當文檔中相同元素名或屬性名但定義內容部一致時,為了區分,需要使用命名空間。定義XML命名空間的語法為在首次使用該命名空間的地方使用xmlns:name="URL",定義后在元素名或屬性名前使用“name:”前綴就能標識該元素或屬性是name命名空間的內容。命名空間使用全球唯一的URL作為命名空間的值,為的是保證命名空間的唯一性,但實際上URL只是一個標識字符串,URL是否有實際意義是沒有關系的。XML的命名空間類似于Java中的package。
 
——————————————————————————————————————————————
 
2012-08-08
 
1、Schema:與DTD一樣,用于驗證XML文檔的有效性,并且比DTD提供更強大的功能和更細粒度的數據類型,還支持自定義數據類型,所以,Schema文檔就是用來聲明XML文檔規則的。最重要的是,Schema本身也是一個XML文件,遵守XML規范,而DTD不是。
 
2、Schema作為XML文檔的一種,自然要遵循XML文檔的基本語法,也需要驗證它的有效性。Schema文檔由DTD驗證,所以Schema的本源也是DTD。
 
3、Schema元素schema:Schema文檔的根元素,屬性有xmlns和targetNamespace。Schema文檔的根元素規定必須為shemale,并且來自URL為http://www.w3.org/2001/XMLSchema的命名空間,Schema文檔中使用的Schema元素和數據類型都來自于該命名空間,這個地址也標識了用于驗證Schema的DTD文檔。另外,這個命名空間的名字可以隨便起,但是整個Schema文檔中使用的Schema元素和數據類型都必須使用該命名空間名字標注。比如:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mynamespace/myschema">,則文檔中所有Schema元素和數據類型都必須用xs標注<xs:元素或類型名>。targetNamespace命名空間用于標識本Schema文檔中自定義的元素和數據類型,其URL值可以自己定義。
 
4、使用Schema文檔校驗XML文檔方法:在被校驗的XML文檔根元素使用<根元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation(Schema文檔中沒有定義targetNamespace的情況)/targetNamespace(有定義targetNamespace情況)="Schema文檔地址">。
 
5、Schema的數據類型分為簡單類型和復雜類型(通過complexType定義)。簡單類型又分為內置數據類型和用戶自定義數據類型(通過simpleType定義)。內置數據類型又可再分為基本數據類型和擴展數據類型。
 
6、Schema元素element:用于聲明被校驗XML文檔的一個元素,主要屬性有:
??? 1)name:聲明元素的名字;
??? 2)type:聲明元素的數據類型,可以使用Schema的數據類型,也可以使用自定義的數據類型。該類型要么是聲明元素的屬性,要么是聲明元素標簽之間的內容或者子元素。
??? 3)ref:用于引用一個聲明好的元素,如<xs:element ref="cat"/>,cat是本文檔中已經聲明的一個元素,該語句表示這里需要填充一個cat元素,常用于聲明自定義數據類型中使用。
??? 4)minOccurs:該屬性值為一個整數,表示該聲明元素最少要出現的次數。
??? 5)maxOccurs:該屬性值為一個整數,表示該聲明元素最多能出現的次數,如果值為unbounded,則表示無限制。
??? 6)substitutionGroup:屬性值是一個已經定義的元素名字,表示可以使用屬性值對應的元素替換屬性歸屬的元素,比較少使用。
 
7、Schema元素group:用于定義一個元素組,將過個元素進行捆綁,元素組中的元素要么全部使用,要么全部不使用,主要屬性有:
??? 1)name:元素組的名字;
??? 2)ref:引用一個元素組,屬性值為已經定義的元素組名。
 
8、Schema元素attribute:用于聲明一個屬性,子元素只能是simpleType或者annotation,主要屬性有:
??? 1)name:聲明屬性的名字;
??? 2)type:聲明屬性的數據類型,只能的簡單類型,不能是復雜類型,因為屬性不能再包含一個屬性,沒有屬性的屬性,只有屬性的類型;
??? 3)ref:引用一個聲明過的屬性,值為聲明過的屬性名,常用在complexType元素中;
??? 4)use:申明屬性的特點,屬性值有optional(可以出現或者不出現)、prohibited(不準使用)、required(必須使用)。
 
9、Schema元素attributeGroup:用于定義一個屬性組,將多個屬性捆綁在一起,調用一個屬性組等于同時調用屬性組里的所有屬性。主要屬性有:
??? 1)name;屬性組的名字;
??? 2)ref:引用一個屬性組,屬性值為已經定義的屬性組名。
 
10、Schema元素restriction:用于將對已存在的簡單類型取值限定在一個范圍內,主要屬性有base,其屬性值為一個簡單類型,常用于simpleType元素中做其子元素。限定范圍的方法借用在restrict元素首尾標簽之間使用Schema其它相關元素來限定:
??? 1)<xs:minInclusive value="value"/>,限定值必須等于或大于value。
??? 2)<xs:maxInclusive value="value"/>,限定值必須等于或小于value。
??? 3)<xs:minExclusive value="value"/>,限定值必須大于value。
??? 4)<xs:maxExclusive value="value"/>,限定值必須小于value。
??? 5)<xs:enumeration value="value"/>,可使用多次來定義一個枚舉類型,限定值
必須為多個值中的一個。
??? ...
 
11、在元素首尾標簽之間定義的類型或者聲明的元素和屬性,類似于Java中的匿名內部類,所以這些類型或者元素和屬性不需要name屬性,它們只能被包含它們的元素使用。這種做法也相當于將元素首尾標簽之間定義的內容用simpleType或complexType元素定義后,再以該元素的type屬性指定。
 
12、聲明元素的type屬性或者元素首尾標簽之間定義的東西,將根據它們的特點作為聲明元素的特定組成部分。如果是元素,則作為聲明元素的子元素;如果是數據類型,則作為聲明元素首尾標簽之間的內容;如果是屬性,則作為聲明元素的屬性。另外,如果type類型或標簽之間的內容是complexType類型的話,則將complexType再拆分,然后根據以上規則將complexType內容作為聲明元素特定的組成部分。
                        
                        
                        1、XML實體可分為普通內部外部實體和內部外部參數實體。普通內部外部實體用在XML文檔中,而內部外部參數實體用在DTD聲明中。
2、DTD聲明普通內部實體語法:<!ENTITY 實體名 實體值>,調用時用格式“&實體名;”。
3、DTD聲明普通外部實體語法:<!ENTITY 實體名 SYSTEM "URI/URL">,表示使用URI或者URL指向文件的全部內容替換實體名,比較少用,調用時用格式“&實體名;”。
4、DTD聲明內部參數實體語法:<!ENTITY %實體名 實體值>,調用時用格式“%實體名;”。
5、DTD聲明外部參數實體語法:<!ENTITY %實體名 SYSTEM "URI/URL">,表示使用URI或者URL指向文件的全部內容替換實體名,比較少用,調用時用格式“%實體名;”。
6、XML的命名空間,當文檔中相同元素名或屬性名但定義內容部一致時,為了區分,需要使用命名空間。定義XML命名空間的語法為在首次使用該命名空間的地方使用xmlns:name="URL",定義后在元素名或屬性名前使用“name:”前綴就能標識該元素或屬性是name命名空間的內容。命名空間使用全球唯一的URL作為命名空間的值,為的是保證命名空間的唯一性,但實際上URL只是一個標識字符串,URL是否有實際意義是沒有關系的。XML的命名空間類似于Java中的package。
——————————————————————————————————————————————
2012-08-08
1、Schema:與DTD一樣,用于驗證XML文檔的有效性,并且比DTD提供更強大的功能和更細粒度的數據類型,還支持自定義數據類型,所以,Schema文檔就是用來聲明XML文檔規則的。最重要的是,Schema本身也是一個XML文件,遵守XML規范,而DTD不是。
2、Schema作為XML文檔的一種,自然要遵循XML文檔的基本語法,也需要驗證它的有效性。Schema文檔由DTD驗證,所以Schema的本源也是DTD。
3、Schema元素schema:Schema文檔的根元素,屬性有xmlns和targetNamespace。Schema文檔的根元素規定必須為shemale,并且來自URL為http://www.w3.org/2001/XMLSchema的命名空間,Schema文檔中使用的Schema元素和數據類型都來自于該命名空間,這個地址也標識了用于驗證Schema的DTD文檔。另外,這個命名空間的名字可以隨便起,但是整個Schema文檔中使用的Schema元素和數據類型都必須使用該命名空間名字標注。比如:<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://mynamespace/myschema">,則文檔中所有Schema元素和數據類型都必須用xs標注<xs:元素或類型名>。targetNamespace命名空間用于標識本Schema文檔中自定義的元素和數據類型,其URL值可以自己定義。
4、使用Schema文檔校驗XML文檔方法:在被校驗的XML文檔根元素使用<根元素 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation(Schema文檔中沒有定義targetNamespace的情況)/targetNamespace(有定義targetNamespace情況)="Schema文檔地址">。
5、Schema的數據類型分為簡單類型和復雜類型(通過complexType定義)。簡單類型又分為內置數據類型和用戶自定義數據類型(通過simpleType定義)。內置數據類型又可再分為基本數據類型和擴展數據類型。
6、Schema元素element:用于聲明被校驗XML文檔的一個元素,主要屬性有:
??? 1)name:聲明元素的名字;
??? 2)type:聲明元素的數據類型,可以使用Schema的數據類型,也可以使用自定義的數據類型。該類型要么是聲明元素的屬性,要么是聲明元素標簽之間的內容或者子元素。
??? 3)ref:用于引用一個聲明好的元素,如<xs:element ref="cat"/>,cat是本文檔中已經聲明的一個元素,該語句表示這里需要填充一個cat元素,常用于聲明自定義數據類型中使用。
??? 4)minOccurs:該屬性值為一個整數,表示該聲明元素最少要出現的次數。
??? 5)maxOccurs:該屬性值為一個整數,表示該聲明元素最多能出現的次數,如果值為unbounded,則表示無限制。
??? 6)substitutionGroup:屬性值是一個已經定義的元素名字,表示可以使用屬性值對應的元素替換屬性歸屬的元素,比較少使用。
7、Schema元素group:用于定義一個元素組,將過個元素進行捆綁,元素組中的元素要么全部使用,要么全部不使用,主要屬性有:
??? 1)name:元素組的名字;
??? 2)ref:引用一個元素組,屬性值為已經定義的元素組名。
8、Schema元素attribute:用于聲明一個屬性,子元素只能是simpleType或者annotation,主要屬性有:
??? 1)name:聲明屬性的名字;
??? 2)type:聲明屬性的數據類型,只能的簡單類型,不能是復雜類型,因為屬性不能再包含一個屬性,沒有屬性的屬性,只有屬性的類型;
??? 3)ref:引用一個聲明過的屬性,值為聲明過的屬性名,常用在complexType元素中;
??? 4)use:申明屬性的特點,屬性值有optional(可以出現或者不出現)、prohibited(不準使用)、required(必須使用)。
9、Schema元素attributeGroup:用于定義一個屬性組,將多個屬性捆綁在一起,調用一個屬性組等于同時調用屬性組里的所有屬性。主要屬性有:
??? 1)name;屬性組的名字;
??? 2)ref:引用一個屬性組,屬性值為已經定義的屬性組名。
10、Schema元素restriction:用于將對已存在的簡單類型取值限定在一個范圍內,主要屬性有base,其屬性值為一個簡單類型,常用于simpleType元素中做其子元素。限定范圍的方法借用在restrict元素首尾標簽之間使用Schema其它相關元素來限定:
??? 1)<xs:minInclusive value="value"/>,限定值必須等于或大于value。
??? 2)<xs:maxInclusive value="value"/>,限定值必須等于或小于value。
??? 3)<xs:minExclusive value="value"/>,限定值必須大于value。
??? 4)<xs:maxExclusive value="value"/>,限定值必須小于value。
??? 5)<xs:enumeration value="value"/>,可使用多次來定義一個枚舉類型,限定值
必須為多個值中的一個。
??? ...
11、在元素首尾標簽之間定義的類型或者聲明的元素和屬性,類似于Java中的匿名內部類,所以這些類型或者元素和屬性不需要name屬性,它們只能被包含它們的元素使用。這種做法也相當于將元素首尾標簽之間定義的內容用simpleType或complexType元素定義后,再以該元素的type屬性指定。
12、聲明元素的type屬性或者元素首尾標簽之間定義的東西,將根據它們的特點作為聲明元素的特定組成部分。如果是元素,則作為聲明元素的子元素;如果是數據類型,則作為聲明元素首尾標簽之間的內容;如果是屬性,則作為聲明元素的屬性。另外,如果type類型或標簽之間的內容是complexType類型的話,則將complexType再拆分,然后根據以上規則將complexType內容作為聲明元素特定的組成部分。
總結
以上是生活随笔為你收集整理的XML学习笔记 第二记的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: 【Docker x Hadoop】使用
- 下一篇: MAMP(win) Apache启动失败
