以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  [求助]xsl可不可以实现从xml文件里数据的第n个数据开始循环输出  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=13830)


--  作者:hyl_fr
--  发布时间:1/19/2005 4:32:00 PM

--  [求助]xsl可不可以实现从xml文件里数据的第n个数据开始循环输出
xsl可不可以实现从xml文件里数据的第n个数据开始循环输出
--  作者:Qr
--  发布时间:1/19/2005 7:24:00 PM

--  
可以的, doubleG 大哥回贴时写过一个示例。搜一下吧。
--  作者:hyl_fr
--  发布时间:1/19/2005 7:32:00 PM

--  
应该怎么搜
--  作者:hyl_fr
--  发布时间:1/19/2005 7:43:00 PM

--  
我的xml文件如下:
<?xml version="1.0" encoding="GB2312" ?>
<?xml:stylesheet type="text/xsl" href="DevMessage.xsl"?>
<Table>
   <Row>
    <Cell><Data Type="String">351982086556</Data></Cell>
    <Cell><Data Type="String">序号</Data></Cell>
    <Cell><Data Type="String">42.0.45.220</Data></Cell>
    <Cell><Data Type="String">2004-01-01</Data></Cell>
    <Cell><Data Type="String">6091145</Data></Cell>
    <Cell><Data Type="String">test</Data></Cell>
   </Row>
   <Row>
    <Cell><Data Type="String">351982086154</Data></Cell>
    <Cell><Data Type="String">序号</Data></Cell>
    <Cell><Data Type="String">42.0.54.154</Data></Cell>
    <Cell><Data Type="String">2004-01-01</Data></Cell>
    <Cell><Data Type="String">2288681</Data></Cell>
    <Cell><Data Type="String">test</Data></Cell>
   </Row>
   <Row>
    <Cell><Data Type="String">351982086754</Data></Cell>
    <Cell><Data Type="String">序号</Data></Cell>
    <Cell><Data Type="String">42.0.44.60</Data></Cell>
    <Cell><Data Type="String">2004-01-01</Data></Cell>
    <Cell><Data Type="String">6892618</Data></Cell>
    <Cell><Data Type="String">test</Data></Cell>
   </Row>
  </Table>
如果我在xsl里循环的时候,不想要第一个数据应该怎么办呢?或者我只想要前两个Row数据应该怎么写xsl呢?


[此贴子已经被作者于2005-1-20 9:11:56编辑过]

--  作者:doubleG
--  发布时间:1/20/2005 1:22:00 PM

--  
Sam的http://bbs.xml.org.cn/dispbbs.asp?boardID=8&ID=13859就可以的,下面是提供另外一个思路。
还有别的方法可以实现但效率不高,提供此仅供参考
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:variable name="beginNum">2</xsl:variable>
<xsl:variable name="endNum">3</xsl:variable>
<xsl:template match="Table">
 <table>
  <xsl:call-template name="outputOneRow">
   <xsl:with-param name="currentIndex" select="$beginNum"/>
   <xsl:with-param name="currentRowNode" select="./child::Row[position()=$beginNum]"/>
  </xsl:call-template>
 </table>
</xsl:template>

<xsl:template name="outputOneRow">
 <xsl:param name="currentIndex"/>
 <xsl:param name="currentRowNode"/>
 
 <tr>
 <xsl:for-each select="$currentRowNode/child::*">
  <td><xsl:value-of select="./Data"/></td>
 </xsl:for-each>
 </tr>
 <xsl:if test="$currentIndex  &lt; $endNum">
  <xsl:call-template name="outputOneRow">
   <xsl:with-param name="currentIndex" select="$currentIndex + 1"/>
   <xsl:with-param name="currentRowNode" select="$currentRowNode/following-sibling::Row[1]"/>
  </xsl:call-template>
 </xsl:if>
</xsl:template>
</xsl:stylesheet>

[此贴子已经被作者于2005-1-20 13:59:43编辑过]

W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.988ms