使用 XSLT 多个键上的不同节点
我想从多个级别的 xml 中获取不同的节点。谁能给我一些提示如何做到这一点?我用谷歌搜索的方法(Muenchian 方法,for-each-group)用单个分组键和简单的层次结构进行了解释。
这是我的 xml 的一个示例:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
</persons>
我希望有基于姓名和年龄的不同人员节点,以及一组不同的邮件节点。因此,对于该示例,所需的输出将是:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
</persons>
有办法做到这一点吗?预先非常感谢。
i would like to get distinct nodes from my xml on multiple levels. Can anyone please give me some hints how to do this? The methods i googled (Muenchian method, for-each-group) were explained with single grouping keys and plain hierarchy.
Here's an example of my xml:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
</persons>
I would like to have distinct person nodes based on name and age, and also a distinct set of mail-nodes. So for the example the desired output would be:
<persons>
<person>
<name>Tom</name>
<age>20</age>
<mails>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
<mail>[email protected]</mail>
</mails>
</person>
</persons>
Is there a way to do this? Thanks a lot in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
我。 XSLT 1.0 解决方案:
此转换:
应用于提供的 XML 文档时:
产生所需的正确结果:
二. XSLT 2.0解决方案
I. XSLT 1.0 solution:
This transformation:
when applied on the provided XML document:
produces the wanted, correct result:
II. XSLT 2.0 solution