在 XSLT 中对节点属性进行排序并保持结构
我有以下问题。我花了两天时间寻找解决方案,但找不到。
我有一个具有不常见级别属性的列表(列表仅用 GDocs 中的边距表示),并且我想重新级别(排序)节点而不重构 XML。
我的输入:
<lists>
<list margin="10">1</list>
<list margin="15">2</list>
<somethingelse/>
<list margin="33">3</list>
<list margin="72">4</list>
<list margin="15">5</list>
<list margin="64">6</list>
<list margin="72">7</list>
</lists>
这个输出没问题:
<lists>
<list level="1">1</list>
<list level="2">2</list>
<somethingelse/>
<list level="1">3</list>
<list level="3">4</list>
<list level="1">5</list>
<list level="2">6</list>
<list level="3">7</list>
</lists>
我想要的输出(两个节点之间的级别差应该仅为 1)
<lists>
<list level="1">1</list>
<list level="2">2</list>
<somethingelse/>
<list level="1">3</list>
<list level="2">4</list>
<list level="1">5</list>
<list level="2">6</list>
<list level="3">7</list>
</lists>
这也可以用 XSLT 1.0 来实现吗?
I have following problem. I worked two days on a solution but I cannot find one.
I have a list with uncommon level-attribute (lists are only represented with margins in GDocs) and I want to re-level (sort) the nodes without restructuring the XML.
My input:
<lists>
<list margin="10">1</list>
<list margin="15">2</list>
<somethingelse/>
<list margin="33">3</list>
<list margin="72">4</list>
<list margin="15">5</list>
<list margin="64">6</list>
<list margin="72">7</list>
</lists>
This output would be ok:
<lists>
<list level="1">1</list>
<list level="2">2</list>
<somethingelse/>
<list level="1">3</list>
<list level="3">4</list>
<list level="1">5</list>
<list level="2">6</list>
<list level="3">7</list>
</lists>
My desired output (level difference between two nodes should only be 1)
<lists>
<list level="1">1</list>
<list level="2">2</list>
<somethingelse/>
<list level="1">3</list>
<list level="2">4</list>
<list level="1">5</list>
<list level="2">6</list>
<list level="3">7</list>
</lists>
Is this also possible to do with XSLT 1.0 ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
看来我自己回答了我的问题。这是解决方案。请记住,两个列表之间的级别差异最大为 +-1。
It seems I answer my question myself. Here is the solution. Keep in mind that the level difference between two lists will be maximum +-1.