?? 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中國論壇 - 初學(xué)進階 - 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=""><!-- 以下為主體內(nèi)容 -->
<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" ><!-- 正文內(nèi)容 -->
<DIV class=pt10><B>7.1 XML鏈接與HTML鏈接</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>進行完對于XML的一系列基本介紹之后,讓我們來探索一些XML更深層次的技術(shù)。完成了后面三章的學(xué)習(xí),相信您將躍升為一個XML開發(fā)高手。這一章我們首先從XML鏈接說起。</P>
<P>說起HTML,大家可能都會對它所提供的超鏈接功能拍手稱快。的確,超鏈接可以說是鼓起了我們網(wǎng)上沖浪的風(fēng)帆,它打破了傳統(tǒng)的直線形和樹形的信息組織結(jié)構(gòu),根據(jù)發(fā)散思維的特點,幫助我們利用網(wǎng)狀的信息組織,方便地瀏覽我們感興趣的內(nèi)容。</P>
<P>了解HTML的讀者都知道,在HTML中表示鏈接的標(biāo)記是<A>,通過標(biāo)記<A>,可以從一個文件鏈接到另一個文件,或者鏈接到文件的某一部分。另外,使用標(biāo)記<IMG>等可以將圖象直接嵌入網(wǎng)頁。下面就是一個典型的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鏈接是單向的,它只能從鏈接所在的文件指向另一個文件。也就是說,我們可以通過標(biāo)記<A>的href屬性知道該文件的若干鏈接目標(biāo),但無法知道又有哪些文件鏈接到該文件,不知道它有哪些鏈接源。其次,HTML鏈接只能指向一個文件,在需要指定多個鏈接的時候,不得不使用多個<A>標(biāo)記,而由于HTML是非結(jié)構(gòu)化的,這些鏈接的關(guān)系和結(jié)構(gòu)信息無法表現(xiàn)。第三,HTML可以鏈接到文件內(nèi)部的某一部分,這通過在目標(biāo)文件中插入命名錨(named
anchor)來實現(xiàn)。但是,如果源文件和目標(biāo)文件由不同的人員負(fù)責(zé),甚至在不同的站點上,兩個文件的協(xié)作就成為問題。</P>
<P>XML鏈接在HTML鏈接的功能之上又加以擴展,可以支持更為復(fù)雜的鏈接。通過XML鏈接,不僅可以在XML文件之間建立鏈接,而且可以建立其他類型數(shù)據(jù)之間的鏈接。不僅如此,XML鏈接還為文件內(nèi)部定位提供了全新的方式,允許鏈接的建立者利用文件結(jié)構(gòu)指定文件內(nèi)部的資源片斷。利用簡單XML鏈接,可以輕松地實現(xiàn)HTML中的鏈接功能;利用擴展XML鏈接,可以在多個資源之間建立鏈接,還可以建立多向的鏈接;利用XPointer在一個XML文件內(nèi)部的定位功能,可以利用目標(biāo)文件的結(jié)構(gòu)指定所鏈接的資源,而無需對目標(biāo)文件進行任何修改;利用鏈接庫,可以將鏈接從文件中分離出來,就象用XSL文件把樣式轉(zhuǎn)換信息從XML文件中獨立出來一樣,從而簡化鏈接的管理。</P>
<P>XML鏈接規(guī)范分為三個部分:XLink語言、XPointer語言和XML
Base,我們將分三節(jié)分別進行講述。關(guān)于Xlink的討論基于XLink語言規(guī)范2000年7月3日候選標(biāo)準(zhǔn);有關(guān)XPointer的討論基于XPointer語言規(guī)范2000年6月7日候選標(biāo)準(zhǔn);有關(guān)XBase的討論基于XBase規(guī)范2000年6月7日工作草案。當(dāng)前這幾個規(guī)范都不是正式標(biāo)準(zhǔn),因此并不穩(wěn)定,某些內(nèi)容會隨著規(guī)范的發(fā)展而變化,建議大家在具體開發(fā)時參考一下W3C公布的最新版本,XLink、XPointer和XBase規(guī)范的最新版本分別可在http://www.w3.org/TR/xlink、http://www.w3.org/TR/xptr、http://www.w3.org/TR/xmlbase處取得。</P>
<P>在詳細(xì)介紹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>標(biāo)記名不同。上例中用的是LINK,而不是HTML中的A。事實上,XML中沒有專門用于鏈接的標(biāo)記,任意標(biāo)記名的元素都可以是XML的鏈接元素,因此例子中的標(biāo)記名LINK,完全可以換成其他的名字,而不象在HTML中那樣一定要用標(biāo)記<A>。
<LI>使用了命名空間。上例中的第一個屬性為命名空間聲明,且其他屬性名都有命名空間前綴。雖然可以使用自己喜歡的任何前綴代表XLink命名空間,但直接使用xlink前綴可以增加文件的可讀性,因而我們更推薦這種做法。xlink前綴可以在文件的根元素中定義,也可以在使用xlink前綴的元素中定義。
<LI>增加了許多與鏈接相關(guān)的屬性。例子中除了第一個屬性是命名空間聲明和第三個屬性與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鏈接元素,而其他只用于提供各種描述鏈接的特性信息。處理程序正是根據(jù)type的值決定如何處理該XLink元素。需要強調(diào)的是,如果XML文件具有文件類型定義DTD,XLink的全局屬性必須在DTD中定義。不過,并不是所有的XLink全局屬性都必須在DTD中加以聲明,可以根據(jù)需要進行裁剪,只聲明使用到的屬性即可。而且,將一個元素聲明為鏈接元素并沒有增加對元素的屬性和內(nèi)容的限制,只要元素實例符合DTD聲明,仍然可以包括任意屬性和內(nèi)容。上例的DTD聲明如下,其中屬性ALT和ALIGN都與鏈接本身無關(guān):
</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>當(dāng)前的主流瀏覽器Netscape和Internet Explorer對XLink的支持非常弱,在Netscape
6.0的預(yù)覽發(fā)行版中可以發(fā)現(xiàn)對簡單XML鏈接的支持,但是其支持的部分并不完全符合最新的規(guī)范;IE5.5沒有提出對XLink的支持。另外,雖然現(xiàn)在有許多關(guān)于XLink的研究計劃,但能夠完整支持XLink的工具和應(yīng)用還沒有出現(xiàn)。<BR></P></DIV>
<P></P>
<P></P></TD></TR></TBODY></TABLE>
</center>
</div>
<P></P>
<P>
<P></P></BODY></HTML>
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -