acerbic coffee
          走自己的路,讓別人跑步
          posts - 26,comments - 14,trackbacks - 0
          例一:

          關于XSLTXML的介紹就不再多說,這里關注的是如何使用XSLT分頁顯示XML中的數據,并可以針對每一列對全部數據進行重新排序.

          假設有下面的XML數據,需要使用XSLT分頁顯示XML數據,并可針對每一列對所有數據進行重新排序,應該如何處理呢?

          XML數據如下:

           1 <?xml version="1.0" encoding="gb2312"?>
           2 <AllUsers xmlns:dt="urn:schemas-microsoft-com:datatypes">
           3     <User>
           4         <UserID>01</UserID>
           5         <UserName>OhYeah</UserName>
           6         <UserEmail>Oh@126.com</UserEmail>
           7     </User>
           8     <User>
           9         <UserID>02</UserID>
          10         <UserName>楊過</UserName>
          11         <UserEmail>yg@21.com</UserEmail>
          12     </User>
          13     <User>
          14         <UserID>03</UserID>
          15         <UserName>真寶玉</UserName>
          16         <UserEmail>xyz@msn.com</UserEmail>
          17     </User>
          18     <User>
          19         <UserID>04</UserID>
          20         <UserName>天堂</UserName>
          21         <UserEmail>tt@163.net</UserEmail>
          22     </User>
          23     <User>
          24         <UserID>05</UserID>
          25         <UserName>草原</UserName>
          26         <UserEmail>yt@sina.com</UserEmail>
          27     </User>
          28 </AllUsers>
          29 

          恐怕最容易想到的就是XSLT中的for-each元素.
           1<xsl:param name="PageNo">1</xsl:param>
           2<xsl:param name="FuncName">goPage</xsl:param>
           3<xsl:param name="Count">4</xsl:param>
           4<table  width="800" border="0" cellspacing="2" cellpadding="2">
           5<tr>
           6        <th><xsl:attribute name="onClick">sortBy('UserID')</xsl:attribute>RecordNo</th>
           7        <th><xsl:attribute name="onClick">sortBy(' UserName')</xsl:attribute>FieldA</th>
           8        <th><xsl:attribute name="onClick">sortBy(' UserEmail')</xsl:attribute>Name</th>
           9</tr>
          10<xsl:for-each select="RecordSet[(position() &lt;= $PageNo*$Count) and (position() &gt; (number($PageNo)-1)*$Count)]">
          11<xsl:sort select="UserID"/>
          12<tr>
          13 <td><xsl:value-of select="'UserID'"/></td>
          14    <td><xsl:value-of select=" UserName"/></td>
          15<td><xsl:value-of select=" UserEmail"/></td>
          16</tr> 
          17</xsl:for-each>
          18</table>
          19

          頁碼數發生變化時,通過JavaScript指定for-each中的$PageNo變量.

          重新排序時,通過JavaScript指定sort元素的select屬性.

          但這里就有一個問題:這里點擊列名重新排序時,只是對當前頁的數據進行了重新排序(原因是先用for-each取出的當前頁的數據,然后才進行排序的),咱們本來的目標應該是對所有數據重新排序的.

                 解決這個問題的過程中,孟子E章曾經給我一篇他網站上的文章,解決了這個問題.但網頁使用的是VBScript,并且不能正確運行.為此,浪費了不少時間(-_-!!!,太懶了,就希望借用成功的代碼,遇到不正確的代碼就不愿自己去看.).不過最終總算搞明白了.解決方案就是先用一個XSLT對所有數據重新排序后生成XML,再對重新排序后的XML進行分頁操作.

                 用于對XML排序并生成XMLXSLT如下:


           1<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
           2<xsl:template match="Table">
           3<?xml version="1.0" encoding="iso-8859-1"?>
           4< AllUsers >
           5    <xsl:for-each select="RecordSet">
           6    <xsl:sort order="ascending" data-type="text" select="Name"/>
           7    <User>
           8    <UserID><xsl:value-of select="RecordNo" /></UserID>
           9    <UserName><xsl:value-of select="FieldA" /></UserName>
          10    <UserEmail><xsl:value-of select="Name" /></UserEmail>
          11    </User>
          12    </xsl:for-each>
          13</ AllUsers >
          14</xsl:template>
          15</xsl:stylesheet>



          例子二:
          posted on 2008-06-04 16:54 acerbic coffee 閱讀(706) 評論(0)  編輯  收藏 所屬分類: 個人筆記
          主站蜘蛛池模板: 西平县| 盱眙县| 大埔县| 黄平县| 合作市| 井陉县| 本溪市| 东方市| 改则县| 南漳县| 枞阳县| 遵化市| 富宁县| 庐江县| 江城| 丰都县| 鄂伦春自治旗| 兖州市| 准格尔旗| 织金县| 定州市| 吉安市| 易门县| 柳河县| 沁阳市| 武威市| 乌兰察布市| 静海县| 绥化市| 南宁市| 中西区| 锡林浩特市| 蒙城县| 太湖县| 丹阳市| 湘西| 嘉义市| 天峨县| 宁德市| 临猗县| 和田县|