XSLT1:首先从最深的节点开始,将 XML 节点转换为 Html 列表
我有下面的 xml
<root>
<s>
<name>self-1</name>
<parents>
<s>
<name>p-1-2</name>
<parents>
<s>
<name>p-1-2-1</name>
<parents>
<s>
<name>p-1-2-1-1</name>
</s>
</parents>
</s>
<s>
<name>p-1-2-2</name>
</s>
</parents>
</s>
</parents>
</s>
</root>
,我需要编写一个 xslt1 来解析该 xml 以生成如下所示的输出,目标是首先处理所有父节点,最后处理节点 self-1。请给我一些建议。
<ul>
<li>p-1-2-1-1</li>
<ul>
<li>p-1-2-1</li>
<li>p-1-2-2</li>
<ul>
<li>p-1-2</li>
<ul>
<!-- self -->
<li>self-1</li>
</ul>
</ul>
</ul>
</ul>
I have this below xml
<root>
<s>
<name>self-1</name>
<parents>
<s>
<name>p-1-2</name>
<parents>
<s>
<name>p-1-2-1</name>
<parents>
<s>
<name>p-1-2-1-1</name>
</s>
</parents>
</s>
<s>
<name>p-1-2-2</name>
</s>
</parents>
</s>
</parents>
</s>
</root>
and I need to write an xslt1 to parse that xml to produce output like below, the goal is to process all parents nodes first and finally the node self-1. Please give me some advice.
<ul>
<li>p-1-2-1-1</li>
<ul>
<li>p-1-2-1</li>
<li>p-1-2-2</li>
<ul>
<li>p-1-2</li>
<ul>
<!-- self -->
<li>self-1</li>
</ul>
</ul>
</ul>
</ul>
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
这是我关于如何解决这个问题的建议:
输出
这并不完全是您所要求的,但这是故意这样做的:您的示例具有带有
ul
子元素的ul
元素,但是HTML 中不允许这样做(http://www.w3.org/TR/html4/struct/lists.html#h-10.2)。因此,我的样式表通过确保任何ul
仅具有li
子元素来确保结果是有效的 HTML。Here is my suggestion on how to solve that:
That outputs
That is not exactly what you asked for, but that is done intentionally: your sample had
ul
elements withul
children but that is not allowed in HTML(http://www.w3.org/TR/html4/struct/lists.html#h-10.2). So my stylesheet makes sure the result is valid HTML by making sure anyul
has onlyli
child elements.为了处理多个节点
我将模板
更新为如下所示:to handle multile node
<s>
I updated the template
<xsl:template match="parents | root">
to something like below: