我正在尝试使用xml文档并转换为带嵌套的标准html列表:
示例
<orgtree>
<Node nodeID="1363" nodeDescription="Some User" nodeNote="Some Note" X="5260" Y="20">
<Node nodeID="1373" nodeDescription="Some Child User" nodeNote="More">
<Node nodeID="1374" nodeDescription="Another Child" nodeNote="More"/>
<Node nodeID="1375" nodeDescription="Another Child" nodeNote="More"/>
<Node nodeID="1376" nodeDescription="Another Child" nodeNote="More"/>
<Node nodeID="1377" nodeDescription="Another Child" nodeNote="More"/>
</Node>
<Node nodeID="1474" nodeDescription="Another Child" nodeNote="More"/>
<Node nodeID="1475" nodeDescription="Another Child" nodeNote="More"/>
</Node>
</ogtree>
我希望它显示为:
<ul>
<li>Some User<br/>SomeNote
<ul>
<li>Some Child User<br/>More
<ul>
<li>Another Child<br/>More</li>
<li>Another Child<br/>More</li>
<li>Another Child<br/>More</li>
<li>Another Child<br/>More</li>
</ul>
<li>Another Child<br/>More</li>
<li>Another Child<br/>More</li>
</ul>
</li>
</ul>
注意:树可以永远嵌套,每个节点可以有多个子节点。我想以同样的方式展示ul li,但我还是无法做到这一点......有人能给我一个更好的改造方法吗?每个节点还具有用于基于节点id查看图像的页面的图形位置。 (虽然,我可以关心这一部分。)
答案 0 :(得分:4)
这是您需要的XSLT的基本设置。
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
<xsl:template match="orgtree">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:template>
<xsl:template match="Node">
<li>
<xsl:value-of select="@nodeDescription"/>
</li>
<xsl:if test="Node">
<ul>
<xsl:apply-templates/>
</ul>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
它有一个匹配任何Node
元素的模板,并为其任何子项应用此模板,因为它有任何test="Node"
。这种技术称为recursion
在学习XSLT时,我可以推荐基本和高级主题MSDN library和基础知识w3schools。