0

我有很长的 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>

4

1 回答 1

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>

请注意,如果您的层次结构中有任何循环,则此转换将无限运行。

于 2012-06-28T11:02:48.320 回答