?? 0703-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=0703-0300 -->
<HTML><HEAD><TITLE>XML中國論壇 - 初學進階 - 7.3.3 位置路徑和位置集合</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=41 rowSpan=2></TD>
<TD vAlign=center width="520" >
<p align="center"><IMG height=33
src="image/title_learner.gif" width=226></TD>
<TD width=25 rowSpan=2></TD>
</TR>
<TR vAlign=top>
<TD width="520" ><!-- 正文內容 -->
<DIV class=pt10><B>7.3.3 位置路徑和位置集合</B></DIV>
<DIV></DIV><BR>
<DIV class=pt9>
<P>在大多數情況下,完整形式中的XPointer表達式是一個位置路徑(Location
Path),它與XSL轉換中的位置路徑相同。盡管有許多可能的簡寫形式,但一般而言,位置路徑是由"/"分隔的位置步(Location
Step)構成。</P>
<P>位置步在目標文件中指定一個位置,通常是相對于一個已知的位置,如文件的根節點或另外一個位置步等。位置步由一個關鍵字(axis)、節點測試(node-test)和可選的謂詞(prediates)構成,這三個部分我們將在后一小節詳細講述。這里我們首先來看一下其構成形式:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">axis::node-test[prediates]</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>例如,下面的位置步中關鍵字是"descendent",節點測試為"language",謂詞是"position()=2"。</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">descendant::language[position()=2]</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>多個位置步用"/"相連構成位置路徑,在計算定位元素時將從左到右計算,首先計算第一個位置步,得到位置,下一個位置步的計算就相對于這一個位置,依次向下計算。就可以得到最后的結果。例如:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">/child::spec/child::body[position()=2]</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>其中第一個"/"表示根節點;"child::spec"是第一個位置步,表示根節點的spec直接子元素,如果文件的根元素是sepc,計算出來的結果應為根元素,否則計算結果為空;"child::body[position()=2]"是第二個位置步,表示上次計算出來元素的第二個body直接子元素。在上面的例子中,如果文件的根元素是spec,而且它包含兩個以上的body子元素,返回的結果將是一個元素,否則將不返回結果。位置路徑可以照此繼續構造下去。</P>
<P>如果將位置路徑改為:</P>
<DIV align=center>
<CENTER>
<TABLE width="80%" border=1>
<TBODY>
<TR>
<TD
width="100%">/child::spec/child::body[position()>2]</TD></TR></TBODY></TABLE></CENTER></DIV>
<P>如果根元素sepc包含body子元素的數量大于3個,那么返回的結果將至少包含2個元素,從而構成了一個集合,這個集合就稱為位置集合;如果返回的結果只包含一個元素,我們稱位置集合只包含一個元素;如果不返回任何結果,我們稱位置集合是空集。因此位置路徑的計算結果是位置集合。與普通集合不同的是,位置集合中的元素是有序的。其具體排序規則由關鍵字決定。</P>
<P>由于XPointer可以用于XLink中表示資源,而XPointer可能返回多個節點構成的集合。因此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 + -