?? 0102-0300.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0102-0300 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 1.2.3 XML的第二大優勢——超越于格式之上</TITLE>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<STYLE type=text/css>TABLE {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt9 {
FONT-SIZE: 9pt; COLOR: black; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"
}
.pt10 {
FONT-WEIGHT: 700; FONT-SIZE: 10pt; LINE-HEIGHT: 18pt; FONT-FAMILY: "宋體"
}
.TempOutline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; COLOR: #666666; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.TempOutline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; COLOR: #666666; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.Outline11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage0 {
FONT-SIZE: 9pt; MARGIN-LEFT: 15pt; TEXT-INDENT: -28pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage1 {
FONT-SIZE: 9pt; MARGIN-LEFT: 24pt; TEXT-INDENT: -36pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage11 {
FONT-SIZE: 9pt; MARGIN-LEFT: 38pt; TEXT-INDENT: -50pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
.passage111 {
FONT-SIZE: 9pt; MARGIN-LEFT: 51pt; TEXT-INDENT: -64pt; LINE-HEIGHT: 15pt; FONT-FAMILY: "宋體"; TEXT-DECORATION: none
}
</STYLE>
<META content="Microsoft FrontPage 5.0" name=GENERATOR></HEAD>
<BODY vLink=#000000 aLink=#000000 link=#000000 leftMargin=0 topMargin=0
onload=""><!-- 以下為主體內容 -->
<div align="center">
<center>
<TABLE width="100%" border=0 style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD rowSpan=2> </TD>
<TD vAlign=center width=221><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD rowSpan=2> </TD>
</TR>
<TR vAlign=top>
<TD ><!-- 正文內容 -->
<DIV class=pt10><B>1.2.3 XML的第二大優勢——超越于格式之上</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9 >
<P>XML的最大能量來源于它不僅允許你定義自己的一套標記,而且這些標記不必僅限于對于顯示格式的描述。XML允許你根據各種不同的規則來制定標記,比如根據商業規則,根據數據描述甚至根據數據關系來制定標記。<BR>可能你還沒有覺得這有什么好處。那好,還記得前面兩節中那個關于F公司的客戶列表的例子嗎?現在,我們再來一起對兩個不同的文件進行一個詳細的比較。<BR><BR>當這個文件使用HTML語言寫時,文件的樣子如下:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%"><UL><BR><LI>張三</LI><BR><UL><BR><LI>用戶ID:
001</LI><BR><LI>公司: A公司</LI><BR><LI>EMAIL:
zhang@aaa.com</LI><BR><LI>電話:
(010)62345678</LI><BR><LI>地址:
五街1234號</LI><BR><LI>城市: 北京市</LI><BR><LI>省份:
北京</LI><BR><LI>ZIP:
100001</LI><BR></UL><BR><BR><LI>李四</LI><BR><UL><BR><LI>ID:
002</LI><BR><LI>公司: B公司</LI><BR><LI>EMAIL:
li@bbb.org</LI><BR><LI>電話:
(021)87654321</LI><BR><LI>地址:
南京路9876號</LI><BR><LI>城市: 上海市</LI><BR><LI>省份:
上海</LI><BR><LI>ZIP:
200002</LI><BR></UL><BR></UL></TD></TR></TBODY></TABLE></CENTER></DIV>
<P><BR>盡管這也是一個存儲、顯示數據的可行的方法,它的效率和能力卻非常有限。不知你是否已有同感,使用偏重于表現的HTML來置標你的數據有很多潛在的問題。我們至少可以看到以下三個嚴重的問題:
<OL>
<LI>顯示方式內嵌于數據之中<BR>可以看到,現在這些數據是用列表的形式來表示的。如果突然有一天,你的老板要求你用表格來表示這些數據,那么你不得不重新編碼所有這樣的HTML文件!天啊,這可能意味著幾十頁幾百頁要推翻重來啊!
<LI>在這些數據中尋找信息非常困難<BR>如果有一天,你需要從這個網頁中找到所有北京市客戶的信息,你該怎么辦?顯然,如果你不打算手工尋找的話,你要編一個腳本程序,譬如JavaScript,VBScript。那么,你怎么編寫這個程序呢?唯一可行的辦法可能就是逐字尋找“北京”這個字符串。即便你找到了所有這些字段,恐怕你也還沒有解決所有麻煩。這個“北京”是指城市還是指省份呢?(別忘了北京地區的周邊郊縣哦。)
<LI>數據自身的邏輯不得不屈服于HTML語言規范的邏輯<BR>如果你想用Java
Applet來處理你的數據,你又遇到了另一個麻煩。你的Java
Applet將不得不遍歷整個HTML文件,把所有的HTML標記剔除掉,再把剝離出來的有用的數據重新組織。同樣,任何一個不是單純為了顯示HTML文件的應用程序,在處理一個HTML文件中的數據時,都不得不做大量額外的工作。
</LI></OL>
<P>當使用XML時,以上的問題迎刃而解。此時,這段信息的表示是這樣的:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><聯系人列表><BR>
<聯系人><BR>
<姓名>張三</姓名><BR>
<ID>001</ID><BR>
<公司>A公司</公司><BR>
<EMAIL>zhang@aaa.com</EMAIL><BR>
<電話>(010)62345678</電話><BR>
<地址><BR>
<街道>五街1234號</街道><BR>
<城市>北京市</城市><BR>
<省份>北京</省份><BR>
<ZIP>100001</ZIP><BR>
</地址><BR>
</聯系人><BR><BR>
<聯系人><BR>
<姓名>李四</姓名><BR>
<ID>002</ID><BR>
<公司>B公司</公司><BR>
<EMAIL>li@bbb.org</EMAIL><BR>
<電話>(021)87654321</電話><BR>
<地址><BR>
<街道>南京路9876號</街道><BR>
<城市>上海</城市><BR>
<省份>上海</省份><BR>
<ZIP>200002</ZIP><BR>
</地址><BR>
</聯系人><BR></聯系人列表></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以看出,現在標記為要表現的數據賦予了一定的含義。用這種形式存儲時,數據非常地簡單明晰,因為它所攜帶的信息不是顯示上的描述,而是信息的語意。就象我們后面將要看到的那樣,信息的顯示方式已經從信息本身中抽取出來,放在了“樣式單”中。</P>
<P>好,我們現在逐條看一下上面所說的XML的三個問題是如何被一一解決的。
<OL>
<LI>在XML中,顯示樣式從數據信息中抽取出來,放在樣式單文件中。這樣,如果需要改動信息的表現方式,無須改動信息本身,只要改動樣式單文件就夠了。如果這時候老板又讓你把列表的數據改用表格顯示,你無須再去修改那幾十幾百個數據信息文件,因為它們和同一個樣式單文件相關聯,只要改動這個樣式單文件就足夠了。
<LI>在XML中數據搜索可以簡單高效地進行。搜索引擎沒必要再去遍訪整個XML文件,它只須去找一找相關標記下的內容就夠了。也就是說,要想找“北京”,只要看看<城市〉這個標記下的字符串數據是不是匹配就行了。毫不夸張地說,XML的標記為搜索引擎賦予了智慧!
<LI>XML是自我描述語言。即便對于一個預先對我們的FCLML一無所知的人,這個文件也是清晰可讀的。顯然,<ID>002</ID>代表了一個客戶的客戶身份標識,可是如果面對一個<LI>002,他可能就丈二和尚——摸不著頭腦了。再有,看看上面文件中嚴格的層次結構,你就會發現,信息之間的某些復雜關系,比如樹狀結構、繼承關系,在這里也都得到了絕好的體現。這樣一來,那些XML的應用處理程序也會感到輕松多了。
</LI></OL>
<P>看到這里,你可能已經對XML心悅誠服了。不過,XML的優點還遠不止這些哦。</P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -