当前位置导航:炫浪网>>网络学院>>网页制作>>XML/WebService教程

XPath语法

    4.XPath的语法
    我们在前面已经提到过,XPath是用来帮助XSLT在XML源文档中查找定位信息的语言。在实际使用过程中,XPath和XSLT总是混在一起使用,在上面一章的语法例子中我们已经有使用到XPath的语法,只是没有明确点出。但W3C将它们分成两个标准,所以我们也将它们拆成两章来讲解。

    4.XPath的语法

    4.1 当前位置
    4.2 寻址操作
    4.3 运算符
    4.4 功能函数

    4.1 当前位置

    当我们使用XSLT处理XML源文档是,我们用Context来表示当前正在被模板处理的节点位置。比如xsl:template match="/"语句中表示Context在文档的根(root)节点。我不知道如何准确的翻译Context这个词,它类似于C语言里的指针,表示程序当前运行的位置。理解Context对于正确处理XSL模板非常重要,当您的XSL模板输出的文档和您想要的不一样,最先应该分析的就是Context在哪里。
    Location Paths是用于设定你想要寻找的Context节点位置。就类似DOS的目录命令。我们看个例子

    <xsl:for-each select="child::PEOPLE/descendant::PERSON">

    其中child::PEOPLE/descendant::PERSON就是XPath语法,这个表达式就是一个Location Paths,代码说明要显示所有PEOPLE元素的子元素和所有PERSON元素的子元素。通常我们会采用更简单的写法:

    <xsl:for-each select="PEOPLE//PERSON">

    我们来解释path的两种表示方法:"/"和"//"。
    "/"是表示当前文档的节点,类似DOS目录分割符。例如:/PEOPLE表示选择根节点下的PEOPLE元素;PEOPLE/PERSON表示选择PEOPLE元素下所有的PESON子元素。
    "//"则表示当前文档所有的节点。类似查看整个目录。例如://PEOPLE表示选择文档中所有的PEOPLE元素,无论它在什么层次;PEOPLE//PERSON表示在PEOPLE元素下所有的PERSON元素,无论它的层次多深。

 

    4.2 寻址操作

    Axis和Predicate是XPath语法中对Location Paths进行定位操作的语法,具体的用法列表如下

    Axis语法表
    --------------------------------------------------------
    表达式 简写 说明
    --------------------------------------------------------
    self . 选择当前的节点.。
    例子 :
    <TD><xsl:value-of select="."/></TD>
    代码表示在当前位置插入当前的节点包含的文本(text)值,
    --------------------------------------------------------
    parent .. 选择当前节点的父节点。
    --------------------------------------------------------
    attribute @ 选择一个元素的所有属性。
    例子:
    <TD><xsl:value-of select="@PERSONID"/></TD>
    选择PERSON元素的所有属性.
    --------------------------------------------------------
    child 选择当前节点的所有子元素。
    --------------------------------------------------------
    ancestor 选择当前节点的所有父元素(包括父元素的父元素,类推)
    --------------------------------------------------------

    Axis帮助我们选择当前节点周围所有的节点,而Predicate则用来定位当前节点内部的元素。表示方法为方括号[]中加表达式:[ Expression ]。具体举例如下:

    PERSON[position()=2]
    这句代码表示寻找第二个"PERSON" 元素

    PERSON[starts-with(name, "B")]
    这句代码表示寻找所有名称以"B"开头的PERSON元素。

共2页 首页 上一页 1 2 下一页 尾页 跳转到
相关内容
赞助商链接