XML的優(yōu)勢(shì):自描述,格式擴(kuò)展性強(qiáng),允許嵌套
子元素和屬性的區(qū)別,屬性是隱式的,不出現(xiàn)在文檔中。
Xmlns名字空間
CDATA用于對(duì)正常文本的處理。
XML模式定義語(yǔ)言:DTD和XML Schema
XML Schema事實(shí)上也是XML的一種應(yīng)用,也就是說(shuō)XML Schema的格式與XML的格式是完全相同的,而作為SGML DTD的一個(gè)子集,XML DTD具有著與XML格式完全不同的格式。這種區(qū)別會(huì)給XML Schema的使用帶來(lái)許多好處:
1. 由于XML Schema本身也是一種XML,所以許多的XML編輯工具、API 開(kāi)發(fā)包、XML語(yǔ)法分析器可以直接的應(yīng)用到XML Schema,而不需要修改。
2. 作為XML的一個(gè)應(yīng)用,XML Schema理所當(dāng)然的繼承了XML的自描述性和可擴(kuò)展性,這使得XML Schema 更具有可讀性和靈活性。
3. 由于格式完全與XML一樣,XML Schema除了可以像XML一樣處理外,也可以同它所描述的XML文檔以同樣的方式存儲(chǔ)在一起,方便管理。
4. XML Schema與XML格式的一致性,使得以XML為數(shù)據(jù)交換的應(yīng)用系統(tǒng)之間,也可以方便的進(jìn)行模式交換。
XML Schema則不同,它內(nèi)置了三十七種數(shù)據(jù)類型,如long,int,short,double等常用的數(shù)據(jù)類型,XML Schema數(shù)據(jù)類型的真正靈活性來(lái)自于其對(duì)用戶自定義類型的支持。使用complexType和sequence構(gòu)造復(fù)雜類型。
DTD:限制并歸類文檔中的信息,并不限制基本類型意義上的類型,只限制元素子元素很屬性的出現(xiàn)。是有關(guān)一個(gè)元素中可以出現(xiàn)何種模式的子元素的一系列規(guī)則。|表示或,+表示一個(gè)或多個(gè),*表示零個(gè)或多個(gè),?表示零個(gè)或一個(gè)。
DTD
1. 單個(gè)文本元素和屬性不能定義,不能定于為整數(shù)。
2. 只能指定一個(gè)無(wú)序的集合,很難指定每個(gè)標(biāo)簽只出現(xiàn)一次
XML Schema可以用minOccurs和maxOccurs指定某個(gè)子元素出現(xiàn)的最多和最少次數(shù)。
XML Schema較DTD的優(yōu)勢(shì):
1. 允許把元素中出現(xiàn)的文本限制為專門類型
2. 允許創(chuàng)建用戶自定義類型
3. 允許唯一性和外鍵約束
4. 與名字空間結(jié)合以允許文檔遵從不同模式
5. 允許使用繼承來(lái)擴(kuò)展復(fù)雜類型
6. 允許使用專門類型來(lái)對(duì)類型進(jìn)行限制,最大最小值
XML查詢轉(zhuǎn)換工具:XPath,XQuery,XSLT
XPath是基于路徑表達(dá)式的語(yǔ)言,FLWOR表達(dá)式
XQuery仿照SQL
XSLT(XSL Transformation)是由XSL(XML Stylesheet Language)擴(kuò)展而來(lái)的
#PCDATA表示文本數(shù)據(jù),empty表示沒(méi)有內(nèi)容,any表示任意。
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>