+ -
当前位置:首页 → 问答吧 → 跪求XSTL转换XML的问题

跪求XSTL转换XML的问题

时间:2010-09-01

来源:互联网

doc.xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="docs.xsl"?>
<docs>
 <directory name="Dir 1">
  <file name="File 1" size="125" path="file1.pdf" />
  <file name="File 2" size="10.2" path="file2.txt" />
 </directory>
 <directory name="Dir 2">
  <directory name="Dir 3">
  <file name="File 3" size="1887" path="file3.pdf" />
  </directory>
  <directory name="Dir 4">
  <file name="File 4" size="475" path="file4.pdf" />
  <file name="File 5" size="49" path="file4.zip" />
  </directory>
 </directory>
</docs>

要显示的结果:
.Dir 1 - size: 67,6
  -file1 -size:125
  -file2 -size:10,2

.Dir 2 -size: 803,66666
  -Dir 3 -size:1887
  *file3 -size:1887
  -Dir 4 -size :262
  *file4 -size:475
  *file5 -size:49

Stats:
Files:5
Files (size >50):3
Files (.Pdf):3

(说明:在Dir1里有两个文件file1,file2,在Dir2中包含Dir3和Dir4,Dir3里有文件file3,Dir4里有文件file4和file5)

怎么写docs.xsl 文件啊?
谢谢

作者: beta_lele   发布时间: 2010-09-01

XML code

<xsl:stylesheet 
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0"
    exclude-result-prefixes="xs">
    
<xsl:output indent="yes"/>

<xsl:template match="docs">
    <xsl:copy>
        <xsl:apply-templates select="*"/>
        <div>status</div>
        <div>Files: <xsl:value-of select="count(//file)"/></div>
        <div>Files (gt 50): <xsl:value-of select="count(//file[@size>50])"/></div>        
    </xsl:copy>
</xsl:template>

<xsl:template match="directory">
    <div>
        <xsl:value-of select="@name"/>    -size:<xsl:value-of select="sum(//file/@size)"/>
        <xsl:apply-templates select="*"/>
    </div>
</xsl:template>

<xsl:template match="file">
    <div>
        <xsl:value-of select="@name"/>    -size:<xsl:value-of select="@size"/>
    </div>
</xsl:template>

</xsl:stylesheet>

作者: icy_csdn   发布时间: 2010-09-01

热门下载

更多