问题标签 [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.
xpath - 如何在 Saxon 中使用 XPath 3.1?
我目前正在使用 XPath 3.1 语法,但由于某种原因,Saxon 输出错误:
To use XPath 3.1 syntax, you must configure the XPath parser to handle it
.
我该怎么做呢?
非常感谢!!!
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
允许。
xml - XPath 3.1 表达式将属性收集为每个选定节点的名称/值映射
XPath 3.1 支持一个新的映射特性,它允许在结果序列中映射。 https://www.w3.org/TR/xpath-31/#id-maps
例如,下面是有效的 XPath 3.1 表达式,它返回 2 个映射的硬编码序列:
我正在尝试使用此功能将节点属性收集为地图列表。
例如,对于给定的 xml:
如何制作一个简单的 XPath 表达式以获得以下结果:
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"}
。
c# - xslt 3.0 和 xpath3.1 的数组和映射示例
我想在 XPath3.1 中使用新功能,比如array
and map
,这听起来像是一个 googleable 的问题,但我尝试了许多示例代码仍然收到错误消息,这是我到目前为止的方法:
所以有一个简单且有效的代码可以展示和的力量array
吗map
?谢谢!
saxon - saxon xpath 3.1,在创建地图时访问变量
我有以下xml
我正在尝试为每个客户构建一个地图对象,如下所示:
但是对于每次迭代,我都使用相同的大陆和类型,每个客户都使用相同的类型。
我如何构建我的 xpath,以便只生成一次大陆和类型元素,并且可以在每个地图中访问。
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), ' '))
规范中作为单参数版本的定义给出的等价是错误的吗?
xslt - xpath“元素()”记录在哪里?
我只是偶然发现了这个 xpath 函数(?),我认为它的功能类似于 node()等。但是,我似乎根本找不到任何文档。
例子
我使用最新版本的撒克逊处理器。
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 语法有所了解吗?
谢谢
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 序列的任何见解?