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 @Scheduled Cron表达式使用方式

《SpringBoot@ScheduledCron表达式使用方式》:本文主要介绍SpringBoot@ScheduledCron表达式使用方式,具有很好的参考价值,希望对大家有所帮助,如有... 目录Cron 表达式详解1. 表达式格式‌2. 特殊字符解析3. 常用示例‌4. 重点规则5. 动态与复杂场景‌

Linux修改pip和conda缓存路径的几种方法

《Linux修改pip和conda缓存路径的几种方法》在Python生态中,pip和conda是两种常见的软件包管理工具,它们在安装、更新和卸载软件包时都会使用缓存来提高效率,适当地修改它们的缓存路径... 目录一、pip 和 conda 的缓存机制1. pip 的缓存机制默认缓存路径2. conda 的缓

Spring Boot 集成 Quartz 使用Cron 表达式实现定时任务

《SpringBoot集成Quartz使用Cron表达式实现定时任务》本文介绍了如何在SpringBoot项目中集成Quartz并使用Cron表达式进行任务调度,通过添加Quartz依赖、创... 目录前言1. 添加 Quartz 依赖2. 创建 Quartz 任务3. 配置 Quartz 任务调度4. 启

Spring Boot中定时任务Cron表达式的终极指南最佳实践记录

《SpringBoot中定时任务Cron表达式的终极指南最佳实践记录》本文详细介绍了SpringBoot中定时任务的实现方法,特别是Cron表达式的使用技巧和高级用法,从基础语法到复杂场景,从快速启... 目录一、Cron表达式基础1.1 Cron表达式结构1.2 核心语法规则二、Spring Boot中定

Windows系统下如何查找JDK的安装路径

《Windows系统下如何查找JDK的安装路径》:本文主要介绍Windows系统下如何查找JDK的安装路径,文中介绍了三种方法,分别是通过命令行检查、使用verbose选项查找jre目录、以及查看... 目录一、确认是否安装了JDK二、查找路径三、另外一种方式如果很久之前安装了JDK,或者在别人的电脑上,想

Python中Windows和macOS文件路径格式不一致的解决方法

《Python中Windows和macOS文件路径格式不一致的解决方法》在Python中,Windows和macOS的文件路径字符串格式不一致主要体现在路径分隔符上,这种差异可能导致跨平台代码在处理文... 目录方法 1:使用 os.path 模块方法 2:使用 pathlib 模块(推荐)方法 3:统一使

一文教你解决Python不支持中文路径的问题

《一文教你解决Python不支持中文路径的问题》Python是一种广泛使用的高级编程语言,然而在处理包含中文字符的文件路径时,Python有时会表现出一些不友好的行为,下面小编就来为大家介绍一下具体的... 目录问题背景解决方案1. 设置正确的文件编码2. 使用pathlib模块3. 转换路径为Unicod

MySQL9.0默认路径安装下重置root密码

《MySQL9.0默认路径安装下重置root密码》本文主要介绍了MySQL9.0默认路径安装下重置root密码,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们... 目录问题描述环境描述解决方法正常模式下修改密码报错原因问题描述mysqlChina编程采用默认安装路径,

解决jupyterLab打开后出现Config option `template_path`not recognized by `ExporterCollapsibleHeadings`问题

《解决jupyterLab打开后出现Configoption`template_path`notrecognizedby`ExporterCollapsibleHeadings`问题》在Ju... 目录jupyterLab打开后出现“templandroidate_path”相关问题这是 tensorflo

解读静态资源访问static-locations和static-path-pattern

《解读静态资源访问static-locations和static-path-pattern》本文主要介绍了SpringBoot中静态资源的配置和访问方式,包括静态资源的默认前缀、默认地址、目录结构、访... 目录静态资源访问static-locations和static-path-pattern静态资源配置