问题标签 [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.
xml - 如何将可变参数传递给 XPath 表达式?
我想将参数传递给 XPath 表达式。
我可以用 XPath 1.0 做到这一点吗?(我试过了string-join
了,但在 XPath 1.0 中没有)
那我该怎么做呢?
我的 XML 看起来像
我想获取<y>
x 元素值所在的元素值val1
我试过//a/b/c[x='val1']/y
了,但没有用。
xml - Xpath 计算非空后代
好吧,我有下一个 xml 输入:
如何计算根元素(sub3,text)的非空文本后代?当我使用count(/root/descendant::*[normalize-space()])
它时计数为 5,但我希望为 2。我尝试计算元素的非空文本后代,如下所示:
它返回 2,但我希望是 1。
我哪里错了?
xml - XPath - 从非重复列表中获取具有不同文本值的节点
我有一个如下的 XML:
到目前为止,我的 XPath 演变如下:
//cd1|//cd2|//cd3
: 获取所有 cd1、cd2 和 cd3 元素(//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>
现在我需要删除具有重复文本值的元素。我试过 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* ,因为真实姓名不匹配。我在这里使用了一个示例。
xml - 空格分隔的文本节点的 XPath 条件
使用这样的元素:
有没有办法定义一个 XPath 1.0 条件(计算为布尔值)来检查元素的文本节点是否包含一个或多个空格分隔值,例如"two"
and "three"
,假设这些值可能以任何顺序出现?这些值还可能包含其他值的一部分,如"two"
和所示"two-and-a-half"
。
这个问题是关于 XPath 编码模式的,并且没有假设特定的编程语言/工具上下文。为了论证起见,您可以假设element
已经是表达式的上下文节点,并且
因此将评估为true
。
xslt - 如何在 XPath 表达式中对多个子项使用 concat() 函数
像这样的东西可以正常工作“concat('a','b')”,但我不能将它作为现有表达式的一部分,即
我希望它返回“那个”
xml - xpath:修剪节点中的空格
我有一个通过基于 java 的系统处理的 xml。
如果 xml 上的任何节点包含空格,则该进程将挂起或出错。
所以如果我有这个例子,我怎样才能消除文本节点周围的空格?
重要的是要提到这个 xpath 应该是“动态的”,所以如果 xml 发生变化,它仍然会捕获那些空间。
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)
创建一些我不理解的层次结构(它是哪种格式):
但仅适用于第一个主要类别
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
有什么建议么?
xml - 我可以重构以避免“self::”和“parent::”吗?
我想提取//pre
和//code
元素但排除//pre/code
. 例如:
我想检索四个元素:
<pre><code>foo</code></pre>
<code>bar</code>
<pre>baz</pre>
<code>select me</code>
(而且我特别不想要<code>foo</code>
)
以下 xpath 似乎可以解决问题:
我不知道这是否是正确的方法,但它似乎有效。
有没有更简洁的方式来表达这一点(例如,不需要self::
and parent::
)?
xpath - 使用纯 xpath 1.0 的不纯节点的平均数
是否可以总结 XML 之后的温度:
在 xpath 2.0 中,我可以得到三个数字的平均值
是否可以在纯 xpath 1.0 中编写一个可以做同样事情的表达式? 对有关在 xpath 1.0 中的不纯节点上使用“sum”的问题的回答使我认为可能不是。
所以,总而言之,有没有办法只使用 xpath 1.0 表达式从这些不纯节点获得平均温度?