gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-03 16:52:56 24 4
gpt4 key购买 nike

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

当我处于<step>上下文中时,我需要能够匹配先前的过程/任务/步骤,该步骤的父过程与其当前过程的@ref和@seq匹配,并且字母“ A”作为值对于@conf。

<document>
<topic>
<procedure ref="056" seq="01" conf="A">
<task>
<step>1. Blah Blah (056-01-A)</step>
</task>
</procedure>
<procedure ref="057" seq="02" conf="A">
<task>
<step>2. Blah blah (057-02-A)</step>
</task>
</procedure>
<procedure ref="057" seq="02" conf="B">
<task>
<step>2. Blah blah (057-02-B)</step>
</task>
</procedure>
<procedure ref="057" seq="03" conf="A">
<task>
<step>3. Blah blah (057-02-A)</step>
</task>
</procedure>
</topic>
</document>


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

//procedure[@ref=current()/ancestor::procedure/@ref and @seq=current()/ancestor::procedure/@seq and @conf='A']/task/step


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

for $ref in ancestor::procedure/@ref, $seq in ancestor::procedure/@seq return //topic/procedure[@ref=$ref and @seq=$seq and @conf='A']/task/step/text()


有没有人对XPath 1.0如何实现这一目标有任何建议?请注意,该过程的位置无法进行硬编码。重复的引用可以在任意位置多次出现。另外,还要求使用 <step>的起始上下文进行此匹配。

我怀疑我的问题的答案是无法解决,但我确实知道,如果可以解决,这就是寻找答案的地方!预先感谢所有考虑此问题的人。

这篇文章是类似的,但是搜索正在寻找具有起始上下文的子代: Xpath Getting All Nodes that Have an Attribute that Matches Another Node

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

有什么建议?

最佳答案

正如Tomalak和Honza Hejzl所建议的那样,使用XPath 1.0无法做到这一点。感谢您的反馈。

关于xpath - XPath 1.0:使用当前节点的父节点的属性值来查找另一个匹配的节点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35850586/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com