XML+XSL 显示目录树结构 (分数不多,交个朋友)

XML.XML

 1<part>
 2<partname>徐仪</partname>
 3<dir>
 4<dirname>Root</dirname>
 5<file>
 6<name>File1</name>
 7<size>20050</size>
 8</file>
 9<dir>
10<dirname>Dir1</dirname>
11<file>
12<name>File_1_1</name>
13<size>20050</size>
14</file>
15</dir>
16<dir>
17<dirname>Dir2</dirname>
18<file>
19<name>File_2_1</name>
20<size>20050</size>
21</file>
22<dir>
23<dirname>Dir2_1</dirname>
24<file>
25<name>File_2_1_1</name>
26<size>20050</size>
27</file>
28</dir>
29</dir>
30</dir>
31</part>

XML.XSL

 1<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 2<xsl:template match="/">
 3<table border="0" cellpadding="0" cellspacing="0" width="100%">
 4<xsl:for-each select="//Dir">
 5<tr>
 6<td><xsl:value-of select="./DirName"></xsl:value-of></td>
 7</tr>
 8</xsl:for-each>
 9<xsl:for-each select="//File">
10<tr>
11<td>
12<xsl:value-of select="//File/Name"></xsl:value-of>:   
13<xsl:value-of select="//File/Size"></xsl:value-of>
14</td>
15</tr>
16</xsl:for-each>
17</table>
18</xsl:template> </xsl:stylesheet>

XML.JS

 1<script language="javascript">   
 2var xml = new ActiveXObject("Microsoft.XMLDOM")   
 3xml.async = false   
 4  
 5xml.load("XML.XML")   
 6  
 7xml=xml.documentElement   
 8xml=xml.selectSingleNode("//Part[PartName='徐仪']")   
 9  
10var result= new ActiveXObject("Microsoft.XMLDOM")   
11result.async   
12result.loadXML(xml.xml)   
13  
14var xsl = new ActiveXObject("Microsoft.XMLDOM")   
15xsl.async = false   
16xsl.load("XML.XSL")   
17document.write(result.transformNode(xsl))   
18</script>

我想要的结果是

Root
Dir1
Dir2
File1: 20050

显示结果是
Root
Dir1
Dir2
Dir2_1
File1: 20050
File1: 20050
File1: 20050
File1: 20050

有些文件出现了好几次不知道是为什么

---------------------------------------------------------------

try

1<xsl:for-each select="//File">
2<tr>
3<td>
4<xsl:value-of select="Name"></xsl:value-of>:   
5<xsl:value-of select="Size"></xsl:value-of>
6</td>
7</tr>
8</xsl:for-each>

---------------------------------------------------------------

//File means all File, try

 1<xsl:stylesheet version="1.0" xmlns:fo="http://www.w3.org/1999/XSL/Format" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 2<xsl:template match="/">
 3<table border="0" cellpadding="0" cellspacing="0" width="100%">
 4<xsl:for-each select="//Dir">
 5<tr>
 6<td><xsl:value-of select="DirName"></xsl:value-of></td>
 7</tr>
 8<tr>
 9<td><table>
10<xsl:for-each select="File">
11<tr>
12<td>
13<xsl:value-of select="Name"></xsl:value-of>:   
14<xsl:value-of select="Size"></xsl:value-of>
15</td>
16</tr>
17</xsl:for-each>
18</table>
19</td>
20</tr>
21</xsl:for-each>
22</table>
23</xsl:template> </xsl:stylesheet>
Published At
Categories with Web编程
comments powered by Disqus