-- 作者:hanll
-- 发布时间:3/21/2005 5:06:00 PM
--
xml文件: <?xml version='1.0' encoding='GB2312'?> <Layout> <ROW num="1"> <F281>于小姐</F281> <F286>12</F286> <F284>ÖíÈâ</F284> <F287>168</F287> <F285>14</F285> <F283>1</F283> </ROW> <ROW num="2"> <F281>于小姐</F281> <F286>12</F286> <F284>²ÚÃ×</F284> <F287>98</F287> <F285>9.8</F285> <F283>2</F283> </ROW> <ROW num="3"> <F281>于小姐</F281> <F286>12</F286> <F284>ËáÄÌÀÒ</F284> <F287>174</F287> <F285>34.8</F285> <F283>3</F283> </ROW> <ROW num="4"> <F281>谢小姐</F281> <F286>9</F286> <F284>ɳ²è</F284> <F287>167.4</F287> <F285>18.6</F285> <F283>4</F283> </ROW> <ROW num="5"> <F281>谢小姐</F281> <F286>9</F286> <F284>ÖíÈâ¸É</F284> <F287>1696</F287> <F285>42.4</F285> <F283>5</F283> </ROW> <ROW num="6"> <F281>谢小姐</F281> <F286>10</F286> <F284>Ϻ×Ó</F284> <F287>77</F287> <F285>7.7</F285> <F283>6</F283> </ROW> <ROW num="7"> <F281>谢小姐</F281> <F286>35</F286> <F284>ÖíÈâ¸É</F284> <F287>1484</F287> <F285>42.4</F285> <F283>7</F283> </ROW> </Layout> ======================================= xslt文件如下: <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:math="http://exslt.org/math" extension-element-prefixes="math"> <!--exsl:function name="num:sum"> <xsl:param name="node-set" select="/.." /> <xsl:param name="expr" select="'.'" /> <xsl:variable name="value-of-first" select="number(com:eval($node-set[1], $expr))" /> <xsl:choose> <xsl:when test="count($node-set) <= 1"> <exsl:result select="$value-of-first" /> </xsl:when> <xsl:otherwise> <exsl:result select="$value-of-first + num:sum($node-set[position() != 1], $expr)" /> </xsl:otherwise> </xsl:choose> </exsl:function--> <xsl:template match="Layout"> <HTML> <HEAD> <TITLE>City Data</TITLE> </HEAD> <BODY> <H1>City Data</H1> <TABLE BORDER="1" CELLPADDING="5"> <xsl:for-each-group group-by="F281" select="ROW"> <TR> <TD> <xsl:value-of select="F281"/> </TD> <xsl:for-each-group select="current-group()" group-by="F286"> <TD> <xsl:value-of select="F286"/> </TD> <TD> Number: <xsl:value-of select="sum(current-group()/F285)"/> </TD> <TD> Text: <xsl:value-of select="current-group()/F284" separator="/"/> </TD> </xsl:for-each-group> </TR> </xsl:for-each-group> </TABLE> </BODY> </HTML> </xsl:template> </xsl:stylesheet> ======================================= 编译: java net.sf.saxon.Transform groupxsl.xml groupxsl.xsl >groupxsl.html 结果页面: <HTML> <HEAD> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <TITLE>City Data</TITLE> </HEAD> <BODY> <H1>City Data</H1> <TABLE BORDER="1" CELLPADDING="5"> <TR> <TD>余小姐</TD> <TD>12</TD> <TD> Number: 58.599999999999994 </TD> <TD> Text: 猪肉/糙米/酸奶酪 </TD> </TR> <TR> <TD>谢小姐</TD> <TD>9</TD> <TD> Number: 61 </TD> <TD> Text: 沙茶/猪肉干 </TD> <TD>10</TD> <TD> Number: 7.7 </TD> <TD> Text: 虾子 </TD> <TD>35</TD> <TD> Number: 42.4 </TD> <TD> Text: 猪肉干 </TD> </TR> </TABLE> </BODY> </HTML> ================================ 58.599999999999994 !!!!!
|