XML介紹
表面上, XML看起來像HTML. 兩者都從標(biāo)準(zhǔn)通用標(biāo)記語言(SGML)起源。產(chǎn)生HTML的工具能常常被再用來產(chǎn)生XML。XML在兩個重要區(qū)域中是和HTML不同: 句法和語義.
HTML和XML使用 <, >, 和 & 創(chuàng)造要素和屬性結(jié)構(gòu). 在HTML瀏覽器接受或者忽視混合標(biāo)記語言時,XML語法分析器建立在這些分析器上的應(yīng)用程序比較嚴(yán)格。在XML句法中的錯誤停止文件處理, 用戶或者應(yīng)用得到錯誤啟示, 而不是對文檔結(jié)構(gòu)進(jìn)行猜測。
XML文件必須遵守標(biāo)記文件部分和創(chuàng)造嵌入要素結(jié)構(gòu)的規(guī)定. 在XML文件中要素不能重疊. 如果要素的起始標(biāo)簽是在另一要素以內(nèi),它必須去同一包含要素中中止。例如, 下列的HTML代碼表示了黑體和斜體字的混合結(jié)構(gòu)。
<b>This is bold text. <i>This is bold italic text.</b> This is italic text.</i>
在一些HTML瀏覽器中它會正常顯示。在一位XML從語法上分析上,就行不通了。為了取得在XML中同樣的格式, 可以使用下列的句法.
<b>This is bold text.</b> <i><b>This is bold italic text.</b> This is italic text.</i>
這為XML文件創(chuàng)建者的額外工作提高了互操作性。XML同樣對句法的其它方面要求嚴(yán)格.所有的屬性值一定是加以引用的,你不能在你文件的文本內(nèi)使用<,>或者&,而要用<, >或&代替。
雖然XML關(guān)于句法是嚴(yán)格的, 它為開始者在XML文件中明確定義提供更多選項.<b>總是對HTML處理器有同樣的意義.用XML, 你能建立你的自己標(biāo)記詞匯或者在各種各樣的適合于你的工業(yè)或者項目類型提價標(biāo)記詞中挑選一個.圖表和文件類型定義(DTDs)讓你描繪這些詞匯, 但是你能也建立文件沒有正式規(guī)定使用的詞匯. 使用Namespaces幫助你分辨認(rèn)出使用的詞匯。
這個方法要求適應(yīng)各種不同瀏覽器要求的結(jié)構(gòu)。開發(fā)者不能指望XML應(yīng)用懂得他們的標(biāo)記意味著什么,并理解這些標(biāo)記。 瀏覽器能使目前XML表示出來, 但是要求style sheet以CSS或XSLXSL Transformations(XSLT)來規(guī)范用戶的說明。一些瀏覽器,包含IE5.0+, 包含默認(rèn)的style sheet,但它主要用于診斷而不是用于最終用戶設(shè)計。
XML應(yīng)用也能使他們的自己邏輯進(jìn)入XML詞匯,而不單純依賴style sheets。這邏輯可以采取簡單腳本的形式或綁定到特殊的表示模型,或者它可以涉及編寫整個應(yīng)用程序。這些應(yīng)用利用內(nèi)建的包含在XML文件的標(biāo)簽結(jié)構(gòu)來處理在那些文件中信息, 傳遞給用戶, 把他們與其它數(shù)據(jù)來源連接起來,或者重定向它們到其它適合用戶。
在某一方面,XML是僅僅另一數(shù)據(jù)格式,在其它方面,XML比其它格式有幾個重要優(yōu)勢,它可以更有效地存儲信息。
XML允許開發(fā)者建立他們的屬于自己的保存信息的標(biāo)記結(jié)構(gòu).
XML解析語法是非常明確,而且是一種廣泛應(yīng)用的工具, 它能從在各種各樣的環(huán)境中XML文件使獲得知識.在Unicode基礎(chǔ)的基礎(chǔ)上建立XML使它更容易建立使國際化文件.
應(yīng)用能依賴XML分析器確定結(jié)構(gòu)的可靠性,以及進(jìn)行數(shù)據(jù)類型檢查
XML格式置于文本使他們變得更有閱讀,更容易用文件保證其有效性,更容易糾正錯誤。
XML文件能夠利用大部建立在瀏覽器中的資源。
XML是并非適合于每一個環(huán)境,XML文件比他們?nèi)〈亩M(jìn)制格式的更哆嗦.他們需要更多網(wǎng)絡(luò)帶寬和存儲空間,需要更多的處理器時間,但是, 優(yōu)秀應(yīng)用程序設(shè)計能避免某些問題.
建立一簡單XML文件
為了證明怎樣XML結(jié)構(gòu)能被使用來描述信息, 我們將建立一非?;綳ML文件,它含有一包含下列域的雇員創(chuàng)記錄
.
Name
Home Address
Job Title
Salary
這個是雇員記錄.
Shane S. Kim
1234 South Street
Anywhere, NY 10001
USA
Vice President of Finance
$175,000
定義基本元素
為了開始我們的XML,我們需要一文件或者根元素, 在這個情況下, <employeeRecord>, 保有全部我們文件的內(nèi)容.下面,我們將用一<name>要素表達(dá)雇員名字; <homeAddress>表示地址;<jobTitle element>表示職稱;工資則用<salary>。
<employeeRecord>
<name>Shane S. Kim</name>
<homeAddress>1234 South Street
Anywhere, NY 10001
USA</homeAddress>
<jobTitle>Vice President of Finance</jobTitle>
<salary>$175,000</salary>
</employeeRecord>
指出元素的開始用開始標(biāo)志, 象<employeeRecord>,在元素的結(jié)束是用結(jié)束標(biāo)志,象</employeeRecord>。所有的元素正確嵌入。符合我們上面所說的標(biāo)準(zhǔn)。
重新定義要素
<name>和<homeAddress>要素包括有利于利用的信息,例如,可以對雇員的名字進(jìn)行排序。我們將添加一些孩子元素<givenName>,<middleName>和<familyName>到名字要素.
<name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>
我們將也給我們家庭地址要素添加更多細(xì)節(jié).
<homeAddress><street>1234 South Street</street>
<city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>
<country>USA</country></homeAddress>
現(xiàn)在文件如下:
<employeeRecord>
<name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>
<homeAddress><street>1234 South Street</street>
<city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>
<country>USA</country></homeAddress>
<jobTitle>Vice President of Finance</jobTitle>
<salary>$175,000</salary>
</employeeRecord>
在這版本中,要素結(jié)構(gòu)辨認(rèn)出全部的文件內(nèi)容. 如果我們認(rèn)為不應(yīng)該包括某內(nèi)容或結(jié)構(gòu),我們可以使用一個屬性。例如如果這個公司以超過一各的貨幣支付薪水,那就必須指定貨幣的種類。文檔將變成下面的樣子:
<salary currency="USD">$175,000</salary>
以相似方式一個有關(guān)<employeeRecord>要素的employeeID屬性可以使程序變得更容易操縱雇員記錄, 特別當(dāng)我們必須聯(lián)合多個XML文件時.
<employeeRecord employeeID="2344-12Z">
現(xiàn)在完整文件如下:
<employeeRecord employeeID="2344-12Z">
<name><givenName>Shane</givenName> <middleName>S.</middleName> <lastName>Kim</lastName></name>
<homeAddress><street>1234 South Street</street>
<city>Anywhere</city>, <stateProvince>NY</stateProvince> <postalCode>10001</postalCode>
<country>USA</country></homeAddress>
<jobTitle>Vice President of Finance</jobTitle>
<salary currency="USD">$175,000</salary>
</employeeRecord>
Microsoft Internet Explorer提供一缺省的對XML文件的瀏覽器,可以展示他們的結(jié)構(gòu), 以及支持使用CSS或ESL表示的XML格式文本。如果一XML文件包含一xml stylesheet處理指令, Internet Explorer使用指定相應(yīng)的形式顯示信息.如果沒有xml stylesheet處理指令,Internet Explorer應(yīng)用它的缺省的style sheet.
默認(rèn)的style sheet是對于許多通用程序很有用.裝載一文件到Internet Explorer 使微軟XML Parser(MSXML)解析文件的語法和檢查它的結(jié)構(gòu)是否合法。如果解析語法失敗, Internet Explorer報告錯誤信息. 如果解析語法取得成功, Internet Explorer給出是一輪廓文件結(jié)構(gòu), 以小的+和-圖標(biāo)來顯示其中的內(nèi)容。如果文檔某一部分長度比較長,這種顯示能幫助你迅速瀏覽信息.
-
XML文件的各個部分
-

元素是組成XML的最基本的單位,它由開始標(biāo)記,屬性和結(jié)束標(biāo)記組成。下面就是一個屬性的開始標(biāo)記:
<elementName att1Name="att1Value" att2Name="att2Value"...>
就是一個元素的例子,每個元素必須有一個元素名,元素可以若干個屬性以及屬性值。如果元素沒有屬性,則開始標(biāo)記為<elementName>。而結(jié)束標(biāo)記為</elementName>。下面就是一個人的元素,其中包括了此人的姓名:
givenName>Peter</givenName> <familyName>Kress</familyName></person>
|