怎样用xsl递归循环输出无限层次xml数据?
如:
Menu.xml
1<menu>
2<menuitem href="1.html" target="NewWin" title="Menu1"/>
3<menuitem href="2.html" target="NewWin" title="Menu2"/>
4<menuitem href="21.html" target="NewWin" title="Menu21">
5<menuitem href="22.html" target="NewWin" title="Menu22"/>
6<menuitem href="23.html" target="NewWin" title="Menu23"/>
7<menuitem href="231.html" target="NewWin" title="Menu231">
8<menuitem href="232.html" target="NewWin" title="Menu232"/>
9</menuitem>
10</menuitem>
11<menuitem href="3.html" target="NewWin" title="Menu3"/>
12<menuitem href="31.html" target="NewWin" title="Menu31">
13<menuitem href="32.html" target="NewWin" title="Menu32"/>
14</menuitem>
15</menu>
Menu.html
1<html>
2<head>
3<title>Menu</title>
4<meta content="text/html; charset=utf-8" http-equiv="Content-Type"/>
5<style type="text/css">
6<!--
7body { font-size: 9pt }
8.Menu { font-size: 9pt }
9\-->
10</style>
11<script language="javascript">
12<!--
13//载入菜单xml数据源
14var MenuXml = new ActiveXObject("Microsoft.XMLDOM");
15MenuXml.async = "false";
16MenuXml.load("Menu.xml");
17
18//载入xml输出样式
19var MenuXsl;
20function LoadMenuXsl(){
21MenuXsl = MenuStyle.XMLDocument;
22}
23
24//转换菜单输出
25var strMenu;
26function LoadMenu(){
27strMenu = MenuXml.transformNode(MenuXsl);
28alert(strMenu);
29}
30\-->
31</script>
32</head>
33<body bgcolor="#FFFFFF" onload="LoadMenuXsl();LoadMenu();" text="#000000">
34<xml id="MenuStyle">
35<?xml version="1.0" encoding="gb2312"?>
36<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
37<xsl:template match="/">
38<table>
39<tr>
40<td align="center" height="25">
41菜单目录
42</td>
43</tr>
44<tr>
45<td>
46<!-- 这里递归循环,怎么实现?-->
47<xsl:value-of select="Menu/MenuItem/@Title"></xsl:value-of>
48</td>
49</tr>
50</table>
51</xsl:template>
52</xsl:stylesheet>
53</xml>
54<div id="Menu">正在载入菜单……</div>
55</body>
56</html>
---------------------------------------------------------------
1<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
2<xsl:template match="/">
3<table>
4<tr>
5<td align="center" height="25">
6菜单目录
7</td>
8</tr>
9<tr>
10<td>
11<!-- 这里递归循环,怎么实现?-->
12<ol>
13<xsl:apply-templates select="/Menu/MenuItem"></xsl:apply-templates>
14</ol>
15</td>
16</tr>
17</table>
18</xsl:template>
19<xsl:template match="MenuItem">
20<li><xsl:value-of select="@Title"></xsl:value-of>
21</li>
22<xsl:if expr="this.hasChildNodes">
23<ol>
24<xsl:apply-templates select="MenuItem"></xsl:apply-templates>
25</ol>
26</xsl:if>
27</xsl:template>
28</xsl:stylesheet>