【发布时间】:2025-12-17 00:40:01
【问题描述】:
我的 XML 结构
<root>
<Q id="a">1</Q>
<Q id="b">2</Q>
<Q id="c">3</Q>
<x>
<Q id="d">3.1</Q>
<Q id="e">3.2</Q>
<Q id="f">3.3</Q>
</x>
<Q id="g">4</Q>
<Q id="h">5</Q>
</root>
这是我的 XPath 表达式:
//Q[@id=$CurrentQid]/preceding::Q
无论当前位置如何,我都在尝试获取前面 Q 节点的列表(我将当前位置作为参数传递给我的 xslt)
当我在"a"、"b"、"c"、"g"、"h" 节点上时,它会返回正确的先前节点列表。但是当我在"d"、"e"、"f" 上时,它无法正常工作。
例如:当我的当前节点是"g"时它返回,
a,b,c,d,e,f
但是当我的当前节点是 "f" 时,它只返回
d,e,f
虽然我希望它是
a,b,c,d,e
如果有人能找到一个非常好的解决方案。
谢谢。
【问题讨论】:
-
您确定此示例 xml 会发生这种情况吗?它不应该也不适合我。
-
你能编辑问题并添加你的
XSL吗? -
我仍然不知道会发生什么。看起来像前面的兄弟而不是前面的以某种方式执行。你用什么 xslt / xpaht 处理器?
-
@hr_117:我会说同样的话,除了如果 XPath 表达式使用
preceding-sibling::,来自上下文节点g的结果将不会包含 d,e,f做了。 -
是的,你是对的,所以这真的很奇怪。