问题标签 [xpath-3.1]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
1520 浏览

xpath - 如何在 Saxon 中使用 XPath 3.1?

我目前正在使用 XPath 3.1 语法,但由于某种原因,Saxon 输出错误:

To use XPath 3.1 syntax, you must configure the XPath parser to handle it.

我该怎么做呢?

非常感谢!!!

0 投票
1 回答
118 浏览

xquery - 字符串值“是/否”是否允许作为序列化函数的缩进参数的值?

使用 BaseX 8.6,以下使用serialize带有 map 作为第二个参数的函数可以正常工作:

并输出缩进的代码

但是,当我尝试使用 Saxon 9.7 或 AltovaXML Spy 运行相同的代码时,它们不会编译查询并抱怨map { 'indent' : 'yes'}不是布尔值而是字符串。https://www.w3.org/TR/xpath-functions-31/#func-serialize定义

所以我不太确定这是否只允许一个布尔值,并且是为了解释它与序列化值相关的含义,yes/no或者它是否也意味着使用yes或被no允许。

0 投票
1 回答
640 浏览

xml - XPath 3.1 表达式将属性收集为每个选定节点的名称/值映射

XPath 3.1 支持一个新的映射特性,它允许在结果序列中映射。 https://www.w3.org/TR/xpath-31/#id-maps

例如,下面是有效的 XPath 3.1 表达式,它返回 2 个映射的硬编码序列:

我正在尝试使用此功能将节点属性收集为地图列表。

例如,对于给定的 xml:

如何制作一个简单的 XPath 表达式以获得以下结果:

0 投票
1 回答
946 浏览

json - 使用 XPath 3.1 fn:serialize 进行 JSON 序列化

我在 Saxon-HE 9.8 中使用 XSLT 3.0 并希望将 JSON 文档作为JSON-LD中的链接数据使用。在 JSON-LD 中,完整的 HTTP URI 通常显示为值。

当我使用 XPath 3.1fn:serialize将数据往返返回到 JSON 时,其中的固线字符http://被转义。序列化回 JSON 时是否可以避免这种转义?

fn:parse-json函数有一个escape可以设置为true()or的参数false(),但我没有看到任何类似的fn:serialize.

我可以使用 删除转义字符fn:replace,但想知道是否有一种我缺少的内置方法可以做到这一点。

示例样式表:

没有fn:replace,结果是{"@context":"http:\/\/schema.org"}。有了fn:replace,结果就是{"@context":"http://schema.org"}

0 投票
1 回答
3999 浏览

c# - xslt 3.0 和 xpath3.1 的数组和映射示例

我想在 XPath3.1 中使用新功能,比如arrayand map,这听起来像是一个 googleable 的问题,但我尝试了许多示例代码仍然收到错误消息,这是我到目前为止的方法:

所以有一个简单且有效的代码可以展示和的力量arraymap?谢谢!

0 投票
2 回答
91 浏览

saxon - saxon xpath 3.1,在创建地图时访问变量

我有以下xml

我正在尝试为每个客户构建一个地图对象,如下所示:

但是对于每次迭代,我都使用相同的大陆和类型,每个客户都使用相同的类型。

我如何构建我的 xpath,以便只生成一次大陆和类型元素,并且可以在每个地图中访问。

0 投票
1 回答
39 浏览

xslt-3.0 - tokenize($s) 和 tokenize($s, ' ') 一样吗?

https://www.w3.org/TR/xpath-functions/#func-tokenize解释了单参数版本tokenize

此函数的单参数形式在空白边界处拆分提供的字符串。

然后继续定义或解释

调用fn:tokenize($input)等效于调用 fn:tokenize(fn:normalize-space($input), ' ')),其中第二个参数是单个空格字符 (x20)

但是,当我尝试count(tokenize('1 2 3')), count(tokenize('1
2
3'))使用 Saxon 或 BaseX 或 XmlPrime 时,我得到了虽然所有三种实现中3 3的假定等效项给了我.count(tokenize('1 2 3', ' ')), count(tokenize('1
2
3', ' '))3 1

因此,所有三种实现似乎都与文本解释所说的有关(“在空白边界处拆分提供的字符串”),但如果从字面上传入一个空格,那么规范中的和给出tokenize($s)的等价似乎并不成立只有单个空格用作分隔符,而不是空白边界。fn:tokenize($input)fn:tokenize(fn:normalize-space($input), ' '))

规范中作为单参数版本的定义给出的等价是错误的吗?

0 投票
1 回答
51 浏览

xslt - xpath“元素()”记录在哪里?

我只是偶然发现了这个 xpath 函数(?),我认为它的功能类似于 node()等。但是,我似乎根本找不到任何文档。

例子

我使用最新版本的撒克逊处理器。

0 投票
2 回答
743 浏览

xpath - 支持 XPath 3.1 的 .Net 标准库

我正在维护我工作的公司的一个遗留工具,用 C# 编写,并将其转换为 .Net 标准 2.0。它使用Saxon-HE处理器来处理一些 XPath 并替换文件中的一些配置。它在 .NET 上的NuGet 包具有不允许在所有 .Net 标准 2.0 兼容平台(在我的情况下是 .Net Framework 和 .Net 核心)上执行的依赖项,因此我需要用另一种工具替换它,如果标准的 .Net XPath 库。

问题是该工具使用一些 XPaths 来执行复杂的操作,例如连接字符串和选择一个数组项,我不知道它是特定于撒克逊的语法还是标准。

了解这一点很重要,因为如果 XPath 符合某些 XPath 标准,我可以找到另一种方法来处理相同的 XPath。

下面是一些例子:

第一的:

第二:

您对这种 XPath 语法有所了解吗?

谢谢

0 投票
1 回答
59 浏览

xproc - XProc 3 可以处理任何 XPath 3.1 值/类型吗?

在阅读 XProc 3 时,我想知道像 XSLT 3 样式表这样的步骤是否可以返回任何类型的 XSLT 3 或 XPath 3.1 数据模型。

http://spec.xproc.org/master/head/xproc/#documents.9中的规范有一段说

如果结果是映射、数组或任何原子值,则创建 JSON 文档并使用内容类型 application/json。

我正在努力理解一般序列会发生什么,例如节点数组序列(例如 type array(node())*)或从原子类型到节点(例如 type )的映射序列,map(xs:string, node())*因为这不是 JSON 可以处理的类型,至少在我知道 JSON 或 XSLT 3 序列化规范允许 JSON 序列化的意义上不是。

关于 XProc 3 是否允许在步骤之间传递任何 XDM 3.1 序列的任何见解?