⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 0703-0300.htm

📁 xml帮助文档
💻 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>
    &nbsp;&nbsp;&nbsp;
      <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()&gt;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 + -