XQuery表达式之路径表达式(Path Expression)

2024-02-25 03:48

本文主要是介绍XQuery表达式之路径表达式(Path Expression),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

[如需转载,请注明出处]

路径表达式其实就是XPath在XQuery中的应用。如果熟悉了XPath,那么对XQuery中的路径表达式也就了解了。
一个路径表达式由一个或多个Step组成,Step由“/“或"//"区分。表示每一个Step都会在前一个Step产生的序列的基础上进一步筛选。Step又分为轴Step和过滤表达式。
下面分别讨论这两种Step
1。轴表达式
轴表达式由轴、节点测试和谓词构成,它们又通过自己方式进行筛选。我们知道一个XML文档可以看作一个节点树,XML文档共有七种节点:
   文档节点(document node)
   元素节点(element node)
   属性节点(attribute node)
   文本节点(text node)
   处理指令节点(processing-instruction node)
   名称空间节点(namespace node)
   注释节点(comment node)
既然是一棵树就有层次关系,一个节点是另外一个节点的父亲,也可能是另外别的节点的兄弟。轴表达式中的轴就是为了表述这种方向的筛选。节点测试则是在所选定的方向上根据节点名字进一步筛选。谓词则是通过给定条件的限定来进一步筛选。举一个例子,给一个XML文档
<xml version="1.0">
<persons>
    <person id="1">
        <firstname>Ramon</firstname>
        <lastname>Liu</lastname>
    </person>
   <person id="2">
        <firstname>Molly</firstname>
        <lastname>Niu</lastname>
   </person>
</persons>
那么我们可以通过/child::persons/child::person[position()=1]/child:firstname/text()来取得”Ramon“文本。
其中child::是轴,person,firstname是名字测试(节点测试的一种,另外一种是类型测试),而position()=1则是谓词,position()是XPath定义的函数。text()是类型测试。
这条XPath语句首先找到当前节点下的名字为persons的孩子,此时当前节点为根节点也就是document node,然后再在所有的persons下找到第一个名字为person的孩子,再接着找到在找到的person下找名字为firstname的孩子,最后找到它的文本节点。
XPath中的轴共有以下几种
child::
descendant::
attribute::
self::
descendant-or-self::
following-sibling::
following::
parent::
ancestor::
preceding-sibling::
preceding::
ancestor-or-self::
而每个轴又有各自的简写方法。关于它们各自的含义和简写方法可以参看W33C的网站。上面的XPath就可以简写为/persons/person[1]/firstname/text()。
2。过滤表达式
过滤表达式比较简单,它是由基本表达式加一个或多个谓词组成。
如:
$order[price gt 100],$order是一个变量引用,当$order引用作为上下文时它的孩子price的值大于100时,返回$order引用的节点或值
(1 to 8)[. mod 2 eq 0],返回(2,4,6,8)





这篇关于XQuery表达式之路径表达式(Path Expression)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!


原文地址:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.chinasem.cn/article/744298

相关文章

SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志

《SpringBoot项目配置logback-spring.xml屏蔽特定路径的日志》在SpringBoot项目中,使用logback-spring.xml配置屏蔽特定路径的日志有两种常用方式,文中的... 目录方案一:基础配置(直接关闭目标路径日志)方案二:结合 Spring Profile 按环境屏蔽关

Java Lambda表达式的使用详解

《JavaLambda表达式的使用详解》:本文主要介绍JavaLambda表达式的使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、前言二、Lambda表达式概述1. 什么是Lambda表达式?三、Lambda表达式的语法规则1. 无参数的Lambda表

VSCode设置python SDK路径的实现步骤

《VSCode设置pythonSDK路径的实现步骤》本文主要介绍了VSCode设置pythonSDK路径的实现步骤,包括命令面板切换、settings.json配置、环境变量及虚拟环境处理,具有一定... 目录一、通过命令面板快速切换(推荐方法)二、通过 settings.json 配置(项目级/全局)三、

使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)

《使用Python和Matplotlib实现可视化字体轮廓(从路径数据到矢量图形)》字体设计和矢量图形处理是编程中一个有趣且实用的领域,通过Python的matplotlib库,我们可以轻松将字体轮廓... 目录背景知识字体轮廓的表示实现步骤1. 安装依赖库2. 准备数据3. 解析路径指令4. 绘制图形关键

如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)

《如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)》:本文主要介绍如何更改pycharm缓存路径和虚拟内存分页文件位置(c盘爆红)问题,具有很好的参考价值,希望对大家有所帮助,如有... 目录先在你打算存放的地方建四个文件夹更改这四个路径就可以修改默认虚拟内存分页js文件的位置接下来从高级-

无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案

《无法启动此程序因为计算机丢失api-ms-win-core-path-l1-1-0.dll修复方案》:本文主要介绍了无法启动此程序,详细内容请阅读本文,希望能对你有所帮助... 在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是"api-ms-win-core-path-l1-1-0.dll丢失

一文详解如何查看本地MySQL的安装路径

《一文详解如何查看本地MySQL的安装路径》本地安装MySQL对于初学者或者开发人员来说是一项基础技能,但在安装过程中可能会遇到各种问题,:本文主要介绍如何查看本地MySQL安装路径的相关资料,需... 目录1. 如何查看本地mysql的安装路径1.1. 方法1:通过查询本地服务1.2. 方法2:通过MyS

Python如何调用指定路径的模块

《Python如何调用指定路径的模块》要在Python中调用指定路径的模块,可以使用sys.path.append,importlib.util.spec_from_file_location和exe... 目录一、sys.path.append() 方法1. 方法简介2. 使用示例3. 注意事项二、imp

使用Python实现矢量路径的压缩、解压与可视化

《使用Python实现矢量路径的压缩、解压与可视化》在图形设计和Web开发中,矢量路径数据的高效存储与传输至关重要,本文将通过一个Python示例,展示如何将复杂的矢量路径命令序列压缩为JSON格式,... 目录引言核心功能概述1. 路径命令解析2. 路径数据压缩3. 路径数据解压4. 可视化代码实现详解1

Java中的Lambda表达式及其应用小结

《Java中的Lambda表达式及其应用小结》Java中的Lambda表达式是一项极具创新性的特性,它使得Java代码更加简洁和高效,尤其是在集合操作和并行处理方面,:本文主要介绍Java中的La... 目录前言1. 什么是Lambda表达式?2. Lambda表达式的基本语法例子1:最简单的Lambda表