?? 0701-0000.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0071)http://162.105.170.55/ASPs/GetLearningArticleTemp.asp?section=0701-0000 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 7.1 XML鏈接與HTML鏈接</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 width=42 rowSpan=2></TD>
<TD vAlign=center width="493" >
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=51 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="493" ><!-- 正文內容 -->
<DIV class=pt10><B>7.1 XML鏈接與HTML鏈接</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>進行完對于XML的一系列基本介紹之后,讓我們來探索一些XML更深層次的技術。完成了后面三章的學習,相信您將躍升為一個XML開發高手。這一章我們首先從XML鏈接說起。</P>
<P>說起HTML,大家可能都會對它所提供的超鏈接功能拍手稱快。的確,超鏈接可以說是鼓起了我們網上沖浪的風帆,它打破了傳統的直線形和樹形的信息組織結構,根據發散思維的特點,幫助我們利用網狀的信息組織,方便地瀏覽我們感興趣的內容。</P>
<P>了解HTML的讀者都知道,在HTML中表示鏈接的標記是<A>,通過標記<A>,可以從一個文件鏈接到另一個文件,或者鏈接到文件的某一部分。另外,使用標記<IMG>等可以將圖象直接嵌入網頁。下面就是一個典型的HTML鏈接的例子:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><A href =
"http://www.xlinksample.com/students.xml"> List of
Students</A></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>HTML鏈接盡管定義簡單,使用方便,但它也存在著明顯的局限性。首先,HTML鏈接是單向的,它只能從鏈接所在的文件指向另一個文件。也就是說,我們可以通過標記<A>的href屬性知道該文件的若干鏈接目標,但無法知道又有哪些文件鏈接到該文件,不知道它有哪些鏈接源。其次,HTML鏈接只能指向一個文件,在需要指定多個鏈接的時候,不得不使用多個<A>標記,而由于HTML是非結構化的,這些鏈接的關系和結構信息無法表現。第三,HTML可以鏈接到文件內部的某一部分,這通過在目標文件中插入命名錨(named
anchor)來實現。但是,如果源文件和目標文件由不同的人員負責,甚至在不同的站點上,兩個文件的協作就成為問題。</P>
<P>XML鏈接在HTML鏈接的功能之上又加以擴展,可以支持更為復雜的鏈接。通過XML鏈接,不僅可以在XML文件之間建立鏈接,而且可以建立其他類型數據之間的鏈接。不僅如此,XML鏈接還為文件內部定位提供了全新的方式,允許鏈接的建立者利用文件結構指定文件內部的資源片斷。利用簡單XML鏈接,可以輕松地實現HTML中的鏈接功能;利用擴展XML鏈接,可以在多個資源之間建立鏈接,還可以建立多向的鏈接;利用XPointer在一個XML文件內部的定位功能,可以利用目標文件的結構指定所鏈接的資源,而無需對目標文件進行任何修改;利用鏈接庫,可以將鏈接從文件中分離出來,就象用XSL文件把樣式轉換信息從XML文件中獨立出來一樣,從而簡化鏈接的管理。</P>
<P>XML鏈接規范分為三個部分:XLink語言、XPointer語言和XML
Base,我們將分三節分別進行講述。關于Xlink的討論基于XLink語言規范2000年7月3日候選標準;有關XPointer的討論基于XPointer語言規范2000年6月7日候選標準;有關XBase的討論基于XBase規范2000年6月7日工作草案。當前這幾個規范都不是正式標準,因此并不穩定,某些內容會隨著規范的發展而變化,建議大家在具體開發時參考一下W3C公布的最新版本,XLink、XPointer和XBase規范的最新版本分別可在http://www.w3.org/TR/xlink、http://www.w3.org/TR/xptr、http://www.w3.org/TR/xmlbase處取得。</P>
<P>在詳細介紹XML鏈接之前,我們先來看一個XML鏈接的例子:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><LINK xmlns:xlink =
"http://www.w3.org/1999/xlink"<BR>
xlink:type = "simple"<BR> xlink:href =
"http://www.xlinksample.com/students.xml"<BR>
xlink:role = "studentlist" <BR>
xlink:title = "Student List"<BR>
xlink:show = "replace"<BR>
xlink:actuate = "onRequest"><BR>List of
Students<BR></LINK></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>與HTML的鏈接元素相比較,上面這個例子中的XML鏈接元素存在以下幾點不同:
<OL>
<LI>標記名不同。上例中用的是LINK,而不是HTML中的A。事實上,XML中沒有專門用于鏈接的標記,任意標記名的元素都可以是XML的鏈接元素,因此例子中的標記名LINK,完全可以換成其他的名字,而不象在HTML中那樣一定要用標記<A>。
<LI>使用了命名空間。上例中的第一個屬性為命名空間聲明,且其他屬性名都有命名空間前綴。雖然可以使用自己喜歡的任何前綴代表XLink命名空間,但直接使用xlink前綴可以增加文件的可讀性,因而我們更推薦這種做法。xlink前綴可以在文件的根元素中定義,也可以在使用xlink前綴的元素中定義。
<LI>增加了許多與鏈接相關的屬性。例子中除了第一個屬性是命名空間聲明和第三個屬性與HTML相似以外,其他的屬性都是新增加的。由XLink給出的全局屬性一共有十個,包括type、href、role、arcrole、title、show、actuate、label、from和to。其中屬性type表明了XLink元素的類型,共有六種Xlink元素,即:simple、extended、locator、arc、resource和title,但只有simple、extended
兩種XLink元素才是真正的XML鏈接元素,而其他只用于提供各種描述鏈接的特性信息。處理程序正是根據type的值決定如何處理該XLink元素。需要強調的是,如果XML文件具有文件類型定義DTD,XLink的全局屬性必須在DTD中定義。不過,并不是所有的XLink全局屬性都必須在DTD中加以聲明,可以根據需要進行裁剪,只聲明使用到的屬性即可。而且,將一個元素聲明為鏈接元素并沒有增加對元素的屬性和內容的限制,只要元素實例符合DTD聲明,仍然可以包括任意屬性和內容。上例的DTD聲明如下,其中屬性ALT和ALIGN都與鏈接本身無關:
</LI></OL>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><!ELEMENT LINK (#PCDATA)><BR><!ATTLIST
LINK<BR> xmlns:xlink CDATA #FIXED
"http://www.w3.org/1999/xlink"<BR> xlink:type (simple) #FIXED
"simple"<BR> xlink:href CDATA #REQUIRED<BR> xlink:role
CDATA #IMPLIED<BR> xlink:title CDATA #IMPLIED<BR>
xlink:show (embed | replace | new) "replace"<BR> xlink:actuate
(onLoad | onRequest) "onRequest"<BR> ALT CDATA
#IMPLIED<BR> ALIGN CDATA
#IMPLIED<BR>></TD></TR></TBODY></TABLE></CENTER></DIV>
<P>當前的主流瀏覽器Netscape和Internet Explorer對XLink的支持非常弱,在Netscape
6.0的預覽發行版中可以發現對簡單XML鏈接的支持,但是其支持的部分并不完全符合最新的規范;IE5.5沒有提出對XLink的支持。另外,雖然現在有許多關于XLink的研究計劃,但能夠完整支持XLink的工具和應用還沒有出現。<BR></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 + -