问题标签 [xpath-2.0]

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 回答
2139 浏览

xslt-2.0 - 为什么 index-of() 在应用于一系列唯一节点时会返回多个值?

我正在使用 xpath2 的 index-of 值返回排序后的节点序列中的 current() 的索引。使用 SAXON,排序后的节点序列是唯一的,但 index-of 返回两个值的序列。

这不会一直发生,只是偶尔发生,但不是出于任何我能找到的原因。有人可以解释发生了什么吗?

我已经根据例程给出这种奇怪行为的数据示例编写了一个最小示例。

源数据为:

我的 xsl 文档将会话节点放入根模板最顶部的排序序列 $orderd 中:

由于节点已经由@startOn 排序,但顺序相反,序列 $orderd 应该与文档排序序列 $nodes 相同,但顺序相反。

当我使用 for-each 语句创建输出时,我发现在使用 index-of 进行测试时,不知何故这两个节点被视为相同。

下面的代码用于输出数据(紧跟在上面的块之后):

正如输出(如下所示)所示,index-of 函数返回序列 (1,2),这意味着它将两个节点视为相同。我检查了用于对值进行排序的表达式,它产生了不同且格式正确的日期时间字符串。

0 投票
1 回答
166 浏览

xml - 使用 XSLT2 的 XML 转换分组

我是 XSLT 的新手,在尝试使用 XSLT2 和 altovaXML 处理器时遇到以下问题。

我的 XSL 如下

很简单,我试图按“ILPROD”子节点进行分组,并在每个组之后输出一个空格。听起来很简单,但我显然犯了一个基本错误,因为处理器说它无法加载文档。如果我删除分组,它工作正常。

有什么想法我哪里出错了吗?

0 投票
3 回答
141 浏览

xslt - 无法获得正确的 XSLT 输出

我有一个这样的 XML:

我的 XSLT 是这样的:

奇怪的是我得到的输出顺序是 1 2 AB,我以为我会得到 1 A 2 B。

不知道为什么会这样?

TIA,

约翰

0 投票
2 回答
199 浏览

xslt - 使用 XSLT/XPath 2.0 以某种方式输出值

我有一个这样的 XML:

我喜欢这样的消息(稍后将它们转换为标签)输出:

A AAA 本田 A BBB 本田 C CCC 丰田

这是我的 XSLT:

不幸的是,它没有输出我想做的事情:(。

我意识到 for-each 会改变上下文,所以剩余的 value-ofs 不会做任何事情。

对此有什么解决方案?

TIA,

约翰

0 投票
2 回答
188 浏览

xslt - 无法使用 XSLT/XPath 2.0 正确获取调试输出

我有一个这样的 XML:

我有一个这样的 XSLT:

问题是调试输出显示为 1 2 3 A AAA Honda 1 2 3 A BBB Honda 1 2 3 C CCC Toyota。我想要 1 A 2 AAA 3 Honda 1 A 2 BBB 3 Honda 1 C 2 CCC 3 Toyota。基本上正确获取属性 colname 的值。

所以几个问题:

  1. 我做错了什么 ?。
  2. 有一个序列 1 2 3 生成为什么?

TIA,

约翰

0 投票
1 回答
90 浏览

xslt-2.0 - XSLT 2.0:用孙节点覆盖节点

我正在尝试找到一种方法,用树中更深处的同名节点替换节点。例如,使用以下输入:

我想制作这样的东西:

我需要能够替换任意数量的节点,并且我还想动态地找出列表,而不是拼出所有的可能性,因为将来事情可能会发生变化。另一个要求是父节点的顺序必须保持不变。(具体来说,我的最终输出将是一个 CSV 文件,因此列需要与标题对齐。)

这是我第一次尝试学习 XSLT,我完全被这个难住了!任何帮助将不胜感激。我正在使用 XSLT 2.0,顺便说一句。

谢谢,马克

0 投票
1 回答
5618 浏览

xslt - XPath:从指定节点获取节点集的根节点

是否可以编写一个 XPath 表达式来获取节点集中的节点的根节点,并且只引用该节点?

使用“/”对我不起作用,因为它只指输入文档根目录。此外,我希望它在没有上下文的情况下工作,并将其用于可以在处理期间动态创建的通用节点集。

例如...

谢谢您的帮助。

0 投票
2 回答
1498 浏览

xslt-2.0 - XSLT 2.0:在序列中查找缺失的元素

我需要根据 ID 号搜索一系列元素。如果找到身份证号码,我会处理它。如果未找到 ID,它将使用默认值填充。我在 Saxon 9.4 HE 中使用 XSLT 2.0。

这是一个非常简化的示例。输入 XML 如下所示:

如果我正在搜索 ID 为 1、2 或 3 的项目,我希望得到以下输出。请注意,我不想要第 4 项的任何输出。

我的第一次尝试是使用 for-each 循环,但它甚至没有编译。我得到的错误是“XPTY0020:Axis step child::element('':id) cannot be used here: context item is an atomic value”来自“”行。

之后我意识到我可以很容易地找到以下匹配的,但我无法找到找到丢失的方法。

顺便说一句,输出还需要按 ID 排序,这意味着转储所有找到的项目的列表,然后再转储未找到的项目的列表是行不通的。这甚至可能吗,还是我应该走轻松/懦弱的道路并改变我的输入?

0 投票
2 回答
290 浏览

xml - XPath - 比较来自不同文档的值

这是我的 XPath 表达式

$XMLDESCRIPTION 中的 ITEM 节点有一个名为 CODE 的属性,如果有一个带有与 $XMLDESCRIPTION 中的@CODE 匹配的描述/@code 的“元素”,我想检查 $XML

问题是:如何访问过滤器 $XML 部分中的 @CODE 属性?

额外信息:

  1. 我在 XSLT 上下文中工作(我使用 stylevision)
  2. 如果我在“ends-with”部分而不是 string(@CODE) 中键入一个固定值,则表达式可以正常工作

XML 这是我的 $XMLDESCRIPTION 片段

这是我的 $XML 文档中的一个片段

对于这两个 xml 示例,我的结果应该是“HellossSSSDDFFSQSSQDFQSDF”,因为这是唯一在 $XML 中具有现有描述节点且代码为“003424”的元素,因此这是 xpath 应该获得的唯一 ITEM 元素的内容。

0 投票
2 回答
866 浏览

java - 使用 XPath 2 验证自日期以来的时间

如何(使用哪个 XPath 表达式)验证格式为“yyyy-MM-dd HH:mm:ss”的日期是否早于特定小时数?我需要使用 Saxon 的 XPathExpression(XPath 2.0,Java 1.7)进行验证。打电话时...

...如果日期比例如 5 小时更新,我希望它返回 true。

假设日期在此 XML 的 dt 属性中:

谢谢马库斯