使用 XSLT 更改节点的位置
我正在使用身份转换,在此期间根据条件,我需要使用 XSLT 更改节点的位置。 假设我有一个如下所示的 XML:
<root>
<a>
<b1>SampleB1</b1>
<b2>
<c1>zyx</c1>
<c2>wvu</c2>
<c3>tsr</c3>
<c4>dtg</c4>
<c5>hkj</c5>
</b2>
<b3>SampleB3</b3>
</a>
</root>
然后我想更改节点 'c4' 和 'c4' 的位置。 'c5' 并希望输出为:
<root>
<c4>dtg</c4>
<c5>hkj</c5>
<a>
<b1>SampleB1</b1>
<b2>
<c1>zyx</c1>
<c2>wvu</c2>
<c3>tsr</c3>
</b2>
<b3>SampleB3</b3>
</a>
</root>
任何人都可以告诉我,我们怎样才能做到这一点。
谢谢 !!!
I am using identity transformation and during this based on a condition, I need to change the position of a node using XSLT.
Suppose, I have an XML like the one:
<root>
<a>
<b1>SampleB1</b1>
<b2>
<c1>zyx</c1>
<c2>wvu</c2>
<c3>tsr</c3>
<c4>dtg</c4>
<c5>hkj</c5>
</b2>
<b3>SampleB3</b3>
</a>
</root>
Then I want to change the position of nodes 'c4' & 'c5' and want output as:
<root>
<c4>dtg</c4>
<c5>hkj</c5>
<a>
<b1>SampleB1</b1>
<b2>
<c1>zyx</c1>
<c2>wvu</c2>
<c3>tsr</c3>
</b2>
<b3>SampleB3</b3>
</a>
</root>
Can anyone please tell me, how can we do this.
Thanks !!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
要重新排列,您需要调整 XSL,以便它按照您想要的顺序和位置复制您想要的内容。例如:
To rearrange, you need to adjust your XSL so that it copies what you wants in the order and location that you want it. For example:
纯拉式:
输出:
Pure pull style:
Output:
试试这个:
理解上述内容的关键是,它不是移动元素,而是复制元素,然后在其他地方跳过它们。不幸的是,这意味着我们需要指定元素移动两次(一次跳过它们,然后再次在其他地方包含它们的副本),但目前我想不出更简洁的方法。
这个问题 - 使用 XSLT 将子节点移动到父属性 可能也有帮助。
Try this:
The key to understanding the above is that its not moving elements so much as copying elements, and then skipping them elsewhere. Unfortunately this means that we need to specify the elements to move twice (once to skip them and then once again to include a copy of them elsewhere), but at the moment I can't think of a neater way.
This question - Move sub nodes into parent attributes with XSLT might also be helpful.