怎样用xsl递归循环输出无限层次xml数据?

怎样用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>
Published At
Categories with Web编程
Tagged with
comments powered by Disqus