我有一长串的xml元素。
每个元素都有一个ID和一个PARENT_ID。
如何基于此制作站点地图/嵌套列表?具有null值的元素是顶级父元素。
我想在HTML中显示带有UL和LI的列表。
<ROOT>
<SITEMAP>
<ARRAY>
<ID>1</ID>
<NAME>Test</NAME>
<PARENT_ID>NULL</PARENT_ID>
</ARRAY>
<ARRAY>
<ID>2</ID>
<NAME>Test2</NAME>
<PARENT_ID>3</PARENT_ID>
</ARRAY>
<ARRAY>
<ID>3</ID>
<NAME>Test3</NAME>
<PARENT_ID>NULL</PARENT_ID>
</ARRAY>
<ARRAY>
<ID>4</ID>
<NAME>Test4</NAME>
<PARENT_ID>1</PARENT_ID>
</ARRAY>
<ARRAY>
<ID>5</ID>
<NAME>Test5</NAME>
<PARENT_ID>4</PARENT_ID>
</ARRAY>
</SITEMAP>
答案 0 :(得分:1)
密钥模板看起来像这样:
<xsl:template matches="ARRAY">
<xsl:variable name="id" select="ID"/>
<output>
<!-- output goes here -->
...
<!-- now process every ARRAY with a PARENT_ID equal to the current node's id. (I.e. its children.) -->
<xsl:apply-templates select="/ROOT/SITEMAP/ARRAY[PARENT_ID = $id]"/>
</output>
</xsl:template>
然后你开始:
<xsl:template matches="/">
<xsl:apply-templates select="/ROOT/SITEMAP/ARRAY[PARENT_ID = 'NULL']"/>
</xsl:template>
请注意,如果层次结构中存在任何周期,则此转换将无限运行。