|
|
1
5
使用XPath可以很容易地解决这个问题。下面是您要寻找的表达式:
可以对其进行分解以使其更具可读性,正如我在以下XSLT 1.0样式表中所做的那样:
这里有一个替代实现,使用Muenchian方法。首先,声明一个密钥:
然后,将$roles的定义替换为如下内容:
当然,这段代码更复杂。除非您有一个大型数据集,需要您使用Muenchian方法加快处理速度(即使这样,我也会进行测试以确保它能为您带来任何好处),否则您最好还是使用上面更简单的版本。 最后,在XSLT2.0中,这要容易得多。简单地将$roles迄今为止的唯一定义替换为以下内容:
我希望这有助于你确定在你提到的各种尝试中你错在哪里。 |
|
|
2
3
输出符合要求:
中XPath表达式的说明
这就是明钦方法。基于一个节点集不能包含同一节点两次的事实,如果两个节点的并集是同一节点,则它们的节点计数为1。这样我们就可以从中选择唯一的节点
如果有多个
注意
链接谓词时,顺序很重要。前者首先检查父节点是否相等,然后从缩减集中获取第一个唯一节点。这就是我们想要的。 后者从集合中获取第一个节点(整个文档中具有给定名称的所有角色节点),获取第一个节点,然后根据父级相等性保留或放弃它。这是错误的。 |
|
|
3
0
递归通常能很好地处理这样的问题。
|
|
|
J_Cus504 · 在单匹配语句中使用身份变换和多谓词来沉默节点 1 年前 |
|
|
surge3333 · 使用PowerShell构建XML 1 年前 |
|
|
Sandeep · XSLT代码,用于根据条件提取元素值 1 年前 |
|
|
Reto · XSLT 3.0突发流-如何存储/获取另一个分支的值 1 年前 |
|
Ian Kemp · 如何从SelectXml调用本机XPath函数? 1 年前 |