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