XPath 3.0中的map和array怎么用

发布时间 - 2026-01-30 00:00:00    点击率:
XPath 3.0 原生支持 map 和 array 类型,扩展了传统序列模型;map 是无序字符串键值对容器,用 ? 访问键;array 是从 1 开始索引的有序集合,用 [] 访问元素;二者均不可变,操作返回新值。

XPath 3.0 原生支持 maparray 类型,这是对传统“序列+节点”模型的重要扩展,让 XPath 能更自然地处理类 JSON 的结构化数据。用法不复杂但容易忽略细节。

map:键值对集合,类似字典或对象

map 是无序的键值对容器,键必须是字符串(其他类型会自动转为字符串),值可以是任意 XPath 类型(包括另一个 map 或 array)。

  • 创建方式:map { "name": "Alice", "age": 30, "active": true() }
  • 取值写法:$m("name")$m?name(推荐后者,更清晰)
  • 嵌套访问:$m?address?city(假设 address 本身也是 map)
  • 检查键是否存在:map:contains($m, "email")
  • 更新值(返回新 map,不可变):map:put($m, "score", 95)

array:有序索引集合,类似列表或数组

array 是从 1 开始索引的有序序列(注意:不是 0!),支持随机访问、切片和追加。

  • 创建方式:["apple", "banana", "cherry"]array { "x", "y" }
  • 取值写法:$a[1](第一个元素)、$a[2 to 3](切片)、$a?size()(长度)
  • 追加元素:array:append($a, "date")(返回新 array)
  • 遍历处理:array:for-each($a, function($x) { upper-case($x) })
  • 与 map 混用很常见:$users[1]?profile?roles[1](假设 users 是 array,每个元素含 profile map)

实用组合技巧

map 和 array 经常一起出现,尤其在处理 JSON 转换后的 XML 结构(如用 json-to-xml())时:

  • 把 JSON 数组转成 XPath array:json-to-xml('{ "items": [1,2,3] }')//*:array → 再用 array { ... } 构造
  • 过滤 map 列表:$users[?status = "active"]($users 是 a

    rray of map)
  • 构造带默认值的 map:map:merge(( $base, map { "id": uuid() } ))

基本上就这些。关键记住:map 用 ? 访问键,array 用 [ ] 索引(从 1 开始),所有操作都返回新值——XPath 3.0 的 map/array 是不可变的。


# js  # json  # app  # ai  # apple  # 键值对  # Array  # for  # date  # xml  # 字符串  # 切片  # append  # map  # function  # 对象  # 键值  # 是从  # 这是  # 第一个  # 遍历  # 再用  # 均不  # 自然地  # 转成  # 是否存在 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 如何在Windows环境下新建FTP站点并设置权限?  Laravel怎么实现微信登录_Laravel Socialite第三方登录集成  深圳网站制作的公司有哪些,dido官方网站?  利用vue写todolist单页应用  Laravel怎么进行浏览器测试_Laravel Dusk自动化浏览器测试入门  网站制作公司哪里好做,成都网站制作公司哪家做得比较好,更正规?  如何用狗爹虚拟主机快速搭建网站?  使用Dockerfile构建java web环境  JavaScript 输出显示内容(document.write、alert、innerHTML、console.log)  如何打造高效商业网站?建站目的决定转化率  如何续费美橙建站之星域名及服务?  PythonWeb开发入门教程_Flask快速构建Web应用  深圳网站制作设计招聘,关于服装设计的流行趋势,哪里的资料比较全面?  Linux系统运维自动化项目教程_Ansible批量管理实战  Javascript中的事件循环是如何工作的_如何利用Javascript事件循环优化异步代码?  企业网站制作这些问题要关注  python中快速进行多个字符替换的方法小结  Windows10电脑怎么查看硬盘通电时间_Win10使用工具检测磁盘健康  Angular 表单中正确绑定输入值以确保提交与验证正常工作  php读取心率传感器数据怎么弄_php获取max30100的心率值【指南】  如何在宝塔面板中创建新站点?  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  C#如何调用原生C++ COM对象详解  C++用Dijkstra(迪杰斯特拉)算法求最短路径  Laravel如何实现数据导出到PDF_Laravel使用snappy生成网页快照PDF【方案】  ChatGPT常用指令模板大全 新手快速上手的万能Prompt合集  Laravel表单请求验证类怎么用_Laravel Form Request分离验证逻辑教程  HTML5建模怎么导出为FBX格式_FBX格式兼容性及导出步骤【指南】  Python结构化数据采集_字段抽取解析【教程】  如何在自有机房高效搭建专业网站?  HTML5段落标签p和br怎么选_文本排版常用标签对比【解答】  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  Laravel如何发送系统通知_Laravel Notifications实现多渠道消息通知  微信小程序 scroll-view组件实现列表页实例代码  Laravel怎么生成二维码图片_Laravel集成Simple-QrCode扩展包与参数设置【实战】  jquery插件bootstrapValidator表单验证详解  怎样使用JSON进行数据交换_它有什么限制  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  Midjourney怎样加参数调细节_Midjourney参数调整技巧【指南】  历史网站制作软件,华为如何找回被删除的网站?  Windows Hello人脸识别突然无法使用  北京网站制作的公司有哪些,北京白云观官方网站?  七夕网站制作视频,七夕大促活动怎么报名?  如何快速生成ASP一键建站模板并优化安全性?  Laravel如何实现API版本控制_Laravel API版本化路由设计策略  如何挑选最适合建站的高性能VPS主机?  如何快速生成橙子建站落地页链接?  Laravel模型关联查询教程_Laravel Eloquent一对多关联写法  创业网站制作流程,创业网站可靠吗?  Laravel怎么实现软删除SoftDeletes_Laravel模型回收站功能与数据恢复【步骤】