?? 0101-0200.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0101-0200 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 1.1.2 什么是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 height="4119" style="border-collapse: collapse" bordercolor="#111111" cellpadding="0" cellspacing="0">
<TBODY>
<TR vAlign=top>
<TD rowSpan=2 height="4119"> </TD>
<TD vAlign=center width=222 height="65"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD rowSpan=2 height="4119"> </TD>
</TR>
<TR vAlign=top>
<TD height="4054" ><!-- 正文內容 -->
<DIV class=pt10><B>1.1.2 什么是XML</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9 >
<P>正象HTML一樣,可擴展置標語言XML(eXtensible Markup
Language)也是一種置標語言。它同樣依賴于描述一定規則的標簽和能夠讀懂這些標簽的應用處理工具來發揮它的強大功能。這一點,從XML的命名上也可窺見一斑。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" bgColor=#ffffc0 border=0>
<TBODY>
<TR>
<TD width="100%">“關于此規范的正確題目,亦即XML的正確全名,應該是Extensible Markup
Language, eXtensible Markup
Language只不過是一個拼寫錯誤罷了。但是,現在簡寫XML不僅正確,而且正如它在本規范的標題中一樣,是Extensible
Markup Language的官方名稱。
<P>這個名稱和簡寫是由James Clark最先提出的,其它可供選擇的名稱還包括小型標準置標語言MGML (Minimal
Generalized Markup Language), 標準置標語言的小型結構MAGMA (Minimal Architecture
For Generalized Markup Applications), 以及互聯網置標結構語言SLIM (Structured
Language for Internet Markup)。</P>
<P align=right>——Extensible Markup Language (XML) 1.0 Specs, The
Annotated Version. ”</P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>從對XML的最初命名可以看出,XML的核心歸根結底還是置標。不過,XML這個置標語言可比HTML的功能要強大的多了。<BR><BR>“人”如其名,XML的強大功能來自于“X”。也就是說,XML不但是置標語言,而且是可擴展的(eXtensible)置標語言。XML并非象HTML那樣,提供了一組事先已經定義好了的標簽,而是提供了一個標準,利用這個標準,你可以根據實際需要定義自己的新的置標語言,并為你的這個置標語言規定它特有的一套標簽。準確的說,XML是一種源置標語言,它允許你根據它所提供的規則,制定各種各樣的置標語言。這也正是XML語言制定之初的目標所在。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" bgColor=#ffffc0 border=0>
<TBODY>
<TR>
<TD width="100%">“XML的制定目標為:
<OL>
<LI>XML應該可以在互聯網上直接使用(*就象HTML那樣好用)。
<LI>XML應該支持各種不同的應用方式(*不但包括瀏覽,還包括對內容的分析)。
<LI>XML應該與SGML兼容(*子承父業嘛,后面我們會講到,SGML是XML的直接先驅)。
<LI>處理XML文件的應用程序應該容易編寫(*計算機系的研究生花上兩周的工夫就該差不多了)。
<LI>XML中的可選特性的數量應該減到最小,最好減至沒有(*可選特性經常造成混淆)。
<LI>XML文件應該具有良好的可讀性,并且比較清晰(*別象HTML那樣,如果不借助瀏覽器,要想讀它簡直就是對你意志力和耐心的考驗)。
<LI>用XML設計新的置標語言應該方便快捷(你不必再去經歷標準制定的繁瑣程序了)。
<LI>XML設計的置標語言應該正式、簡潔(不然怎么易寫易讀?)。
<LI>XML文件應該容易編制(想想要用“記事本”寫個HTML是一件多么可怕的工作)。
<LI>XML標記的簡潔性并不重要(你不必再去費盡心機減少標記)。 </LI></OL>
<P align=right>——Extensible Markup Language (XML) 1.0 Specs, The
Annotated Version.”<BR></P></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>讓我們來考慮一個非常簡單的例子。如果我們需要定義一個新的置標語言,叫做FCLML(F_company s Client List Markup
Language)——F公司的客戶列表置標語言。這個語言應該定義一些標簽來代表可聯系的客戶和有關他們的信息。這組標簽很簡單,它們的優點是代表了一定的語意。讓我們回想一下上一節中這些信息在HTML中是如何用標簽〈UL〉和〈LI〉表示的。與之相比,下面這一段代碼,顯然更加清晰易讀:</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>這一段代碼是一個非常簡單的XML文件。看上去它和HTML非常相象,但細心的人會發現這里的標簽代表的不再是顯示格式,而是對于客戶信息數據的語意解釋。</P>
<P>事實上,用XML定義的置標語言可以根據標記描述的側重點不同分為兩大類。一類偏重于語意描述,正如上面這個例子。還有一類偏重于顯示方式的描述,象現在已經出爐的XHTML、SVG、SMIL,后面我們還會詳細講解。值得一提的是,這里對于顯示方式的描述不僅限于對文本的描述,還可以包括矢量圖形、圖象、聲音。比如,一個形如〈EMPHASIZE〉的標簽在描述文本時可能是要求將文本加粗,而在描述聲音時則要求將音量加大。</P>
<P>不過,正如我們上節所述,僅僅將數據置標還不夠。為了讓別人讀懂這些數據,置標語言中的置標標準還需包括:
<UL>
<LI>置標的語法
<LI>每個置標的含義 </LI></UL>
<P>換句話說,如果想讓計算機應用程序讀懂并能處理這段數據,它還必須知道什么是一個有效的置標(如標簽),如何處理一個有效的置標。具體地說,Netscape瀏覽器如何知道怎樣顯示上面的這段XML文件?標簽〈電話〉是什么含義?它究竟是不是一個合法的標簽?它又應該以什么方式表現?因此,我們的置標語言必須能夠告訴應用程序它所采用的置標的語法,以便于應用程序對其處理。</P>
<P>在XML中,置標的語法是通過文件類型定義DTD(Document Type
Definition)來描述的。也就是說,我們通過DTD來描述什么是有效的標簽,從而進一步定義置標語言的結構。在用XML定義的置標語言中,DTD與數據文件是分離的部分。第三章我們將詳細討論DTD的定義方法。這里我們先給出關于上例的DTD描述,讓大家先睹為快:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">fclml.dtd:<BR><?xml version="1.0"
encoding="GB2312"?><BR><BR><!ELEMENT 聯系人列表
(聯系人)*><BR><!ELEMENT 聯系人
(姓名,ID,公司,EMAIL,電話,地址)><BR><!ELEMENT 地址
(街道,城市,省份)><BR><!ELEMENT 姓名 (#PCDATA)><BR><!ELEMENT ID
(#PCDATA)><BR><!ELEMENT 公司 (#PCDATA)><BR><!ELEMENT EMAIL
(#PCDATA)><BR><!ELEMENT 電話 (#PCDATA)><BR><!ELEMENT 街道
(#PCDATA)><BR><!ELEMENT 城市 (#PCDATA)><BR><!ELEMENT 省份
(#PCDATA)></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>同樣,除了定義置標的語法外,我們還需定義置標的具體含義。為了明確各個標簽的意義,XML使用與之相連的樣式單(style
sheet),由它來向應用程序,比如瀏覽器,提供如何處理顯示的指示說明。一個樣式單的具體格式我們在第四章再具體描述,現在我們只需知道,樣式單所作的規定可能是這樣的:
<OL>
<LI>每當看到一個〈聯系人〉標簽,用一個〈UL〉標簽顯示它。同樣,〈/聯系人〉轉換為一個〈/UL〉標簽。
<LI>所有的〈姓名〉標簽被轉換為〈LI〉標簽加以顯示。同樣,〈/姓名〉轉換
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -