XML 是設(shè)計(jì)用來儲(chǔ)存數(shù)據(jù)和運(yùn)載數(shù)據(jù)的
XML 是設(shè)計(jì)用來攜帶數(shù)據(jù)的,而不是展示數(shù)據(jù)的
XML 的標(biāo)記不是預(yù)定義的,你必須自己定義自己的標(biāo)記
XML 是用來攜帶數(shù)據(jù)和存儲(chǔ)的和簡(jiǎn)化分享,而HTML 用來展示數(shù)據(jù)和格式化數(shù)據(jù)的 ,XML和HTML 在一起就是內(nèi)容和形式的關(guān)系.
一套內(nèi)容可以有多重表示方式,一個(gè)形式,可以展示同一結(jié)構(gòu)的的不同的數(shù)據(jù)
Java EJB里的實(shí)體是一個(gè)POJO ,而XML 是一個(gè) Plain text
WSDL for describing available web services
WAP and WML as markup languages for handled devices
RSS languages for news feeds
RDF and OWL for describing resource and ontology.
XML 文檔組成樹的結(jié)構(gòu) 起于樹根 (root)到分支到樹葉 一個(gè)root element 其它都是child elements
parent children sibling
XML 規(guī)則
1.必須有個(gè)結(jié)束標(biāo)記(tag)
The declaration is not a part of the XML document itself, and it has no closing tag.
聲明不是XML 文檔本身,所以沒有結(jié)束標(biāo)記
2.XML tags 是區(qū)分大小寫的
3.XML 元素必須有合理的嵌套
4.XML必須有根元素
5.Entity References 由于字符的兩意性,所以必須用到實(shí)體的引用
如:< 在通常的文件表示兩種意思,一個(gè)是<>標(biāo)號(hào)的開始,一個(gè)是<小于
在XML 里面如果用單個(gè)< 而沒有配對(duì)的部分,就報(bào)錯(cuò).不會(huì)認(rèn)為是<小于
<message> if salary <1000 then </message> error
<meassge> if salary < ; 1000 then </message>
< | < | less than 小于 |
> | > | greater than 大于 |
& | & | ampersand |
' | ' | apostrophe單引號(hào) |
" | " | quotation mark 雙引號(hào) |
"<" and "$ 在XML 里面是非法的
XML 的注釋
<!-- This a comment-->
HTML 的注釋,JSP和XML注釋一樣
Java注釋有兩種
單行//
多行/* */
XQuery 的注釋用
(: :)
在XML 里面空格是保留不會(huì)被截去的
XML 的換行用LF
windows 用CR and LF unix 用LF ,Macintosh 用CR
XML element 是包含開始標(biāo)簽和結(jié)束標(biāo)簽之間的任何東西
XML 元素的命名規(guī)則:
1.命名可以有字母,數(shù)字,和其他字符.
2.打頭不能用數(shù)字和點(diǎn)號(hào)(.),或者是XML ,xml 等.
3.命名不能包含空格.
最佳命名實(shí)踐
1. 推薦<first_name>
2.不推薦用<first.name>【可以誤認(rèn)為是屬性】 <first-name>【可以誤認(rèn)為是減】 ,: (冒號(hào)是命名空間的保留符號(hào))
XML 的屬性在開始標(biāo)記里,屬性是給元素提供額外的信息,必須被引用無論是
單引號(hào)還是雙引號(hào).可以單雙混合 在HTML 中屬性是方便的,在XML 中建議避免用元素Element 代替
為什么要避免使用屬性:
1.屬性不能有多個(gè)值(element 能夠)
2.屬性不能包含樹結(jié)構(gòu)(element 能夠)
3.屬性擴(kuò)展不易
XML Attributes for Metadata
元數(shù)據(jù)應(yīng)該存儲(chǔ)為屬性,而數(shù)據(jù)本身應(yīng)該存儲(chǔ)為元素.
正確的XML 文檔
格式良好的XML的XML 文檔必須遵循文檔類型定義(DTD)的規(guī)則.
引用DTD
<!DOCTYPE note SYSTEM "Note.dtd">
XML DTD
DTD 的作用是定義XML文檔的結(jié)構(gòu)。它定義了合法元素的列表的結(jié)構(gòu)
一個(gè)DTD的例子
<!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (#PCDATA)> ]> |
<!DOCTYPE root-element [element-declarations]>
外部定義如上.
為什么使用DTD
1.使用DTD ,每個(gè)XML文件攜帶自身格式的描述文檔。
2.驗(yàn)證數(shù)據(jù)。
DTD-XML Building Blocks
XML 文檔由下面的構(gòu)建塊組成:Elements元素,Attributes屬性,Entities實(shí)體
[當(dāng)傳遞到XML解釋器中實(shí)體被展開]
PCDATA 意味著需要解釋的字符數(shù)據(jù),entities 和標(biāo)記會(huì)被解釋器檢查.
CDATA字符數(shù)據(jù),不會(huì)被解釋器所解釋
Element元素
空元素
<!ELEMENT element-name EMPTY>
如:
<!ELEMENT br EMPTY>
<br />
元素包含可以剖析的字符數(shù)據(jù)
<!ELEMENT element-name (#PCDATA)>
元素包含任何內(nèi)容
<!ELEMENT element-name ANY>
有子的元素
<!ELEMENT element-name (child1,child2,....)>
順序必須一樣
通配符(message) 只出現(xiàn)一次,(message+)至少一次,(message*)0次或更多
(message?)0次或者是1次
或關(guān)系(message|body)
聲明屬性
<!ATTLIST payment type CDATA "check">
枚舉屬性值
<!ATTLIST element-name attribute-name (en1|en2|..) default-value> |
<!ATTLIST payment type (check|cash) "cash">
屬性在和數(shù)據(jù)關(guān)聯(lián)不太密切的時(shí)候才建議使用
元數(shù)據(jù)存為屬性而數(shù)據(jù)本身存為元素
字符實(shí)體是一個(gè)變量用來定義標(biāo)準(zhǔn)文本和特殊字符
一個(gè)字符實(shí)體的聲明
<!ENTITY copyright "Copyright W3Schools">
<authou>©right;</author>
一個(gè)實(shí)體由三個(gè)部分:&,實(shí)體名,和分號(hào);
應(yīng)用外部實(shí)體聲明
<!ENTITY writer SYSTEM "http://www.w3schools.com/entities.dtd">
用XML Parser 驗(yàn)證
load()用在文件中,loadXML()用在字符中
已有的元素必須符合已有的規(guī)則
用
xmlDoc = new ActiveXObject("Microsoft.XMLDOM"); 驗(yàn)證
XML Schema
XML Schema 支持?jǐn)?shù)據(jù)類型和命名空間