使用 XSLT 将平面 XML 结构更改为分层结构
我正在尝试使用 XSLT 从平面 XML 文件创建分层 XML 文件,但不确定最好的方法是什么。
例如我需要转换
<root>
<inventory bag="1" fruit="apple"/>
<inventory bag="1" fruit="banana"/>
<inventory bag="2" fruit="apple"/>
<inventory bag="2" fruit="orange"/>
</root>
为
<inventory>
<baglist>
<bag id="1"/>
<bag id="2"/>
</baglist>
<bag id="1">
<fruit id="apple"/>
<fruit id="banana"/>
</bag>
<bag id="2">
<fruit id="apple"/>
<fruit id="orange"/>
</bag>
</inventory>
N 袋/水果
I'm trying to use XSLT to create a hierarchical XML file from a flat XML file, and not sure what the best approach is.
e.g. I need to convert
<root>
<inventory bag="1" fruit="apple"/>
<inventory bag="1" fruit="banana"/>
<inventory bag="2" fruit="apple"/>
<inventory bag="2" fruit="orange"/>
</root>
to
<inventory>
<baglist>
<bag id="1"/>
<bag id="2"/>
</baglist>
<bag id="1">
<fruit id="apple"/>
<fruit id="banana"/>
</bag>
<bag id="2">
<fruit id="apple"/>
<fruit id="orange"/>
</bag>
</inventory>
for N bags/fruits
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
根据
bag
属性的值对inventory
元素进行分组:Group
inventory
elements based on the value of theirbag
attribute:xsl:for-each 您的节点两次,或使用 xsl:模板具有不同的模式。
xsl:for-each your nodes twice, or use xsl:template with different modes.