问题标签 [xpath-1.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 回答
9136 浏览

xml - 如何将可变参数传递给 XPath 表达式?

我想将参数传递给 XPath 表达式。

我可以用 XPath 1.0 做到这一点吗?(我试过了string-join了,但在 XPath 1.0 中没有)

那我该怎么做呢?

我的 XML 看起来像

我想获取<y>x 元素值所在的元素值val1

我试过//a/b/c[x='val1']/y了,但没有用。

0 投票
1 回答
2075 浏览

xml - Xpath 计算非空后代

好吧,我有下一个 xml 输入:

如何计算根元素(sub3,text)的非空文本后代?当我使用count(/root/descendant::*[normalize-space()])它时计数为 5,但我希望为 2。我尝试计算元素的非空文本后代,如下所示:

它返回 2,但我希望是 1。

我哪里错了?

0 投票
3 回答
1906 浏览

xml - XPath - 从非重复列表中获取具有不同文本值的节点

我有一个如下的 XML:

到目前为止,我的 XPath 演变如下:

  1. //cd1|//cd2|//cd3: 获取所有 cd1、cd2 和 cd3 元素

  2. (//cd1|//cd2|//cd3)[text()[1]]:从上面的列表中过滤所有具有非空文本值的元素并返回下面的元素。

    <cd1>A</cd1> <cd2>B</cd2> <cd3>C</cd3> <cd1>A</cd1> <cd2>D</cd2> <cd1>E</cd1> <cd2>D</cd2>

  3. 现在我需要删除具有重复文本值的元素。我试过 xpath 作为(//cd1|//cd2|//cd3)[text()[1]][(preceding::cd1)|(preceding::cd2)|(preceding::cd3)]. 我希望实现的是检查该值是否在上面的任何 cd1 或 cd2 或 cd3 中。但这会在<cd2>D</cd2>重复的地方返回。

    <cd2>B</cd2> <cd3>C</cd3> <cd1>A</cd1> <cd2>D</cd2> <cd1>E</cd1> <cd2>D</cd2>

如何编写 xpath 来解决上述 (3) 问题?

请注意我必须使用 Xpath 1.0 ,因此 distinct-values 函数不是一个选项。此外,我需要获取匹配的节点列表,而不是来自 xpath 的文本值,因为我必须使用 AXIOM 对这些节点进行更多处理。

更新:我正在使用这个 xpath 来获取匹配的元素,然后用 AXIOM 处理这些元素。因此,我需要编写一个 xpath 表达式来一次性获取匹配的元素(我无法在 AXIOM 中编写自定义流程或使用 XSLT)。也不能使用 cd* ,因为真实姓名不匹配。我在这里使用了一个示例。

0 投票
1 回答
812 浏览

xml - 空格分隔的文本节点的 XPath 条件

使用这样的元素:

有没有办法定义一个 XPath 1.0 条件(计算为布尔值)来检查元素的文本节点是否包含一个或多个空格分隔值,例如"two"and "three",假设这些值可能以任何顺序出现?这些值还可能包含其他值的一部分,如"two"和所示"two-and-a-half"

这个问题是关于 XPath 编码模式的,并且没有假设特定的编程语言/工具上下文。为了论证起见,您可以假设element已经是表达式的上下文节点,并且

因此将评估为true

0 投票
2 回答
892 浏览

xslt - 如何在 XPath 表达式中对多个子项使用 concat() 函数

像这样的东西可以正常工作“concat('a','b')”,但我不能将它作为现有表达式的一部分,即

我希望它返回“那个”

0 投票
1 回答
5024 浏览

xml - xpath:修剪节点中的空格

我有一个通过基于 java 的系统处理的 xml。

如果 xml 上的任何节点包含空格,则该进程将挂起或出错。

所以如果我有这个例子,我怎样才能消除文本节点周围的空格?

重要的是要提到这个 xpath 应该是“动态的”,所以如果 xml 发生变化,它仍然会捕获那些空间。

0 投票
2 回答
59 浏览

xml - 如何返回类别及其在同一级别的子类别?

如何使用 XPath(最好是 1.0)选择具有子类别值的类别列表?

结构如下:

  • 类别 (1)
    • 名称 (1)
    • 价值 (1-1)
    • 价值 (1-2)
  • 类别 (2)
    • 名称 (2)
    • 价值 (2-1)
    • 价值 (2-2)
    • 价值 (2-3)
  • 等等

所以理想情况下,我需要一个类别名称及其关联值的返回列表,例如:

  • name(1): value(1-1), value(1-2)
  • name(2): value(2-1), value(2-2), value(2-3)
  • 等等

或者理想情况下:

  • name(1) / value(1-1)
  • name(1) / value(1-2)
  • name(2) / value(2-1)
  • name(2) / value(2-2)
  • name(2) / value(2-3)

    我希望是这样/characteristics/category/[concat(name/uk, "/", value/uk)]的,但语法不正确,

或任何类似的格式,只要我可以区分主要类别和子类别,因此我可以使用适当的后端语言进一步解析该数据。

基本上,我希望实现类别及其子类别之间的关联,以便将它们存储在分层分类词汇表中。

我从提要中获得了以下 XML:

这是返回第一类值的 XPath 查询:

现在我如何组合、比较或反向引用这两个id并使其动态地为每个类别工作?

知道如何生成这样的 XPath 查询吗?

我还尝试了../.., parent::, ancestor::,[]等表达式和条件的不同组合,但没有成功。我也尝试过使用,但它在这个演示string-join中不起作用,其次我试图解析它的代码不支持XPath 2.0。

或者,最接近/相似的选择/格式允许我列出并区分不同类别的名称及其相关值,以便我可以用不同的语言进一步解析该结构?


其他尝试:

  • concat(/characteristics/category[@id=@id]/name/uk, "/", /characteristics/category[@id=@id]/value/uk)

    仅返回第一个元素:(Orientation/North不需要[@id=@id]

  • concat(/characteristics/category/*/*[name()="uk"]/node(), /characteristics/category)

    创建一些我不理解的层次结构(它是哪种格式):

    但仅适用于第一个主要类别

0 投票
1 回答
400 浏览

xpath - XPath 1.0:使用当前节点的父节点的属性值来寻找另一个匹配的节点

我发现了许多与此问题类似的帖子,但没有任何内容可以回答这个特定问题。我必须使用 XPath 1.0。我没有可用的 XSLT(或 XQuery 或其他任何东西),也无法使用 XPath 2.0。我从一个软件 (Arbortext Styler) 内部执行此 XPath,我可以在其中使用 XPath 1.0 从其他节点选择内容,但 XSLT 在此上下文中不可用。此外,我无法控制源 XML 的结构。

当我在 的上下文中时<step>,我需要能够匹配上一个过程/任务/步骤,该步骤的父过程匹配当前过程的@ref 和@seq,并且将字母“A”作为@conf 的值.

我需要的是这样的东西,但没有软件应用程序不支持的 current() 函数:

或类似的东西,但没有 for in return 语句:

有没有人对如何完全使用 XPath 1.0 来实现这一点有任何建议?请注意,程序的位置不能硬编码。重复的 refs 可以在任何位置多次出现。此外,要求此匹配以<step>.

我怀疑我的问题的答案是无法做到,但我知道如果可以做到,这里就是找到答案的地方!提前感谢所有考虑这个问题的人。

这篇文章很相似,但搜索是在寻找起始上下文的孩子:Xpath Getting All Nodes that Have an Attribute of Matches another Node

这也很有趣,但我的属性值不是 ID:Xpath: find an element value from a match of id attribute to id anchor

有什么建议么?

0 投票
2 回答
25 浏览

xml - 我可以重构以避免“self::”和“parent::”吗?

我想提取//pre//code元素但排除//pre/code. 例如:

我想检索四个元素:

  1. <pre><code>foo</code></pre>
  2. <code>bar</code>
  3. <pre>baz</pre>
  4. <code>select me</code>

(而且我特别不想要<code>foo</code>

以下 xpath 似乎可以解决问题:

我不知道这是否是正确的方法,但它似乎有效。

有没有更简洁的方式来表达这一点(例如,不需要self::and parent::)?

0 投票
1 回答
396 浏览

xpath - 使用纯 xpath 1.0 的不纯节点的平均数

是否可以总结 XML 之后的温度:

在 xpath 2.0 中,我可以得到三个数字的平均值

是否可以在纯 xpath 1.0 中编写一个可以做同样事情的表达式? 有关在 xpath 1.0 中的不纯节点上使用“sum”的问题的回答使我认为可能不是。

所以,总而言之,有没有办法只使用 xpath 1.0 表达式从这些不纯节点获得平均温度?