根据前面的节点名称和与匹配节点同名的所有后续节点匹配节点
Match node based on preceding node name and all following nodes of same name as the matched node
我的问题在于将已转换为 XML 的 EDI 文件转换为组。它包含一个动态消息列表,因此更多 UNH 标签带有以下 BGM 标签和 DTM 标签。我不是在寻找 XSLT 样式表的答案。
在这种情况下,我可以有 1 到 35 个 DTM 标签,始终跟在 BGM 标签之后。
在其他标签(如 PTY)之后还有更多 DTM 标签,但我只想匹配 BGM 标签之后的任何 DTM 标签和所有下一个同级 DTM 标签。
我的最终目标是遍历所有细分并将它们添加到组中,如 http://www.truugo.com/edifact/d96a/orders/ 中所述,其中 UNH-FTX 将进入 GRP0,随后的 RFF(强制性)-DTM(条件)进入 GRP1 等等在。
我希望在 XPATH 1.0 中以尽可能少的步骤完成此操作。
提前致谢!
说明性示例,其中粗体 = 匹配的节点。在这种情况下,连续的节点数最多可达 35 个。在其他情况下,我可能需要匹配 200000
<组>
1
组>
<背景音乐>
...
<背景音乐>
...
...
<派>
...
...
...
...
...
<背景音乐>
...
<背景音乐>
...
...
...
...
...
...
...
...
这确实是 counter-intuitive 要做的,但下面是如何通过使用同级运算符过滤来处理集合:
第一个BGM之后的第一组DTM
//DTM [ (preceding-sibling::*)[name()!="DTM"][last()]
= //BGM[1] ]
第二组BGM中IMD之后的两个DTM:
//DTM [ (preceding-sibling::*)[name()!="DTM"][last()]
= //BGM[2]/following-sibling::IMD[1] ]
我的问题在于将已转换为 XML 的 EDI 文件转换为组。它包含一个动态消息列表,因此更多 UNH 标签带有以下 BGM 标签和 DTM 标签。我不是在寻找 XSLT 样式表的答案。
在这种情况下,我可以有 1 到 35 个 DTM 标签,始终跟在 BGM 标签之后。
在其他标签(如 PTY)之后还有更多 DTM 标签,但我只想匹配 BGM 标签之后的任何 DTM 标签和所有下一个同级 DTM 标签。
我的最终目标是遍历所有细分并将它们添加到组中,如 http://www.truugo.com/edifact/d96a/orders/ 中所述,其中 UNH-FTX 将进入 GRP0,随后的 RFF(强制性)-DTM(条件)进入 GRP1 等等在。
我希望在 XPATH 1.0 中以尽可能少的步骤完成此操作。
提前致谢!
说明性示例,其中粗体 = 匹配的节点。在这种情况下,连续的节点数最多可达 35 个。在其他情况下,我可能需要匹配 200000
<组>
组>
<背景音乐>
...
<背景音乐>
<派>
...
...
<背景音乐>
...
<背景音乐>
这确实是 counter-intuitive 要做的,但下面是如何通过使用同级运算符过滤来处理集合:
第一个BGM之后的第一组DTM
//DTM [ (preceding-sibling::*)[name()!="DTM"][last()]
= //BGM[1] ]
第二组BGM中IMD之后的两个DTM:
//DTM [ (preceding-sibling::*)[name()!="DTM"][last()]
= //BGM[2]/following-sibling::IMD[1] ]