?? 0703-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=0703-0200 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學(xué)進(jìn)階 - 7.3.2 XPointer形式</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=40 rowSpan=2></TD>
<TD vAlign=center>
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=40 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD ><!-- 正文內(nèi)容 -->
<DIV class=pt10><B>7.3.2 XPointer形式</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>XPointer有三種形式用于標(biāo)識片斷:完整形式(Full XPointers)、無修飾名稱(bare names)或子節(jié)點(diǎn)序列(child
Sequences)。下面我們來一一講述:
<OL>
<LI><STRONG>完整形式</STRONG> </LI></OL>
<P>完整形式的XPointer可以包括由一個或多個XPointer部分(XPointer
Part),各個部分間可以由空格分開,也可以沒有分隔符。每個XPointer部分用"xpointer"打頭,其后跟一個表達(dá)式,表示根據(jù)此表達(dá)式進(jìn)行定位計算。包含多個部分的XPointer是從左至右逐個部分計算,首先計算第一部分,如果第一個XPointer部分運(yùn)算失敗,將運(yùn)算第二個XPointer部分,直至得到運(yùn)算結(jié)果或處理完所有的部分。</P>
<P>例如下面的第一個例子選取文件中的根元素spec的所有body子元素,第二個例子選取文件中的第2個language元素,第三個例子表示選取文件中id="
_loc"的元素,第四個例子表示首先選取文件中id="_loc"的元素,如果不存在則選取文件中id="_LOC"的元素。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">xpointer(/child::spec/child::body)<BR>xpointer(descendant::language[position()=2])<BR>xpointer(id("_loc
"))<BR>xpointer(id("_loc "))
xpointer(id("_LOC"))</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>在利用XPointer進(jìn)行文件內(nèi)部定位時,所使用的文件是已經(jīng)確定的,如何指定文件是由XLink而不是XPointer所決定。例如在下面的例子中,首先指定了文件為"http://www.xlinksample.com/xpointer.xml",然后再在該文件中尋找需要的元素。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%"><LINK xmlns:xlink =
"http://www.w3.org/TR/1999/xlink"<BR>
xlink:type = "simple"<BR> xlink:href
="http://www.xlinksample.com/xpointer.xml<BR>
#xpointer(/child::*[position()=1]"><BR></LINK></TD></TR></TBODY></TABLE></CENTER></DIV>
<OL>
<LI type=disc value=2><STRONG>無修飾名稱</STRONG> </LI></OL>
<P>在上面的第三個例子中,利用id()進(jìn)行元素定位,表示文件中ID等于指定常數(shù)的元素,因為這種定位方式很常見,XPointer語言提供了一種簡寫方式,可以將xpointer(id(name))簡寫成name。例如:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">http://www.xlinksample.com/xpointer.xml#xpointer(id("_loc"))</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以簡寫為</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">http://www.xlinksample.com/xpointer.xml#_loc</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>可以看出,這種表示法與HTML中完全相同。使用這種簡寫方式有兩個好處:首先,它鼓勵人們使用ID屬性標(biāo)識元素,從而在文件結(jié)構(gòu)發(fā)生變化時鏈接不會失效。其次,它提供了與HTML的兼容性。但是,這種寫法與HTML有著相同的問題,它仍然要求必須同時控制開始文件和目標(biāo)文件,因此選取何種形式取決于具體的應(yīng)用。
<OL>
<LI type=disc value=3><STRONG>子節(jié)點(diǎn)序列</STRONG> </LI></OL>
<P>子節(jié)點(diǎn)序列是由一系列數(shù)字和"/"組成的序列,其中"/"用于分隔數(shù)字,數(shù)字n表示前面定位元素的第n個直接子元素,是"child::*[position()=n]"的簡寫。子節(jié)點(diǎn)序列不考慮元素的名稱和類型,在序列前可以是剛才提到的無修飾名稱,表示從ID屬性為指定名稱的元素開始定位,否則數(shù)字序列必須以"/1"打頭,表示文件的根元素。文件中的其他節(jié)點(diǎn),如屬性、注釋等,不能用子節(jié)點(diǎn)序列定位,由于文件的根節(jié)點(diǎn)沒有父節(jié)點(diǎn),因此也不能用子節(jié)點(diǎn)序列定位。</P>
<P>請注意,文件的根節(jié)點(diǎn)和根元素不是同一個概念。根節(jié)點(diǎn)是一個包含整個文件的抽象節(jié)點(diǎn),包括XML聲明、DTD、處理指令(PI)等,而根元素是文件中最外層的元素,它是根節(jié)點(diǎn)的直接子元素。根節(jié)點(diǎn)用"/"表示,而根元素用"/1"表示。如果用一棵樹表示XML文件,根節(jié)點(diǎn)和根元素的關(guān)系可以表示如下圖,為了清晰起見,圖中沒有把根節(jié)點(diǎn)的其他子節(jié)點(diǎn)和根元素的子節(jié)點(diǎn)畫出。</P><FONT
face=宋體 size=3>
<P align=center><IMG height=113
src="image/TU000000-0703-0200-01.gif" width=203></FONT></P>
<P><BR>下例表示根元素的第4個子元素包含的第5個子元素:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">#/1/4/5</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>如果用完整形式表示,應(yīng)該是:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">#xpointer(/child::*[position()=1]/child::*[position()=4]/child::*[position()=5])</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>下面例子表示id="_loc"元素的第3個子元素內(nèi)的第2個子元素。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD width="100%">#_loc/3/2</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>同樣可以用完整形式表示為:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">#xpointer(id("_loc")/child::*[position()=3]/child::*[position()=2])</TD></TR></TBODY></TABLE></CENTER></DIV>
<P> </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 + -