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

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

          假設(shè)有下面的XML數(shù)據(jù),需要使用XSLT分頁顯示XML數(shù)據(jù),并可針對每一列對所有數(shù)據(jù)進(jìn)行重新排序,應(yīng)該如何處理呢?

          XML數(shù)據(jù)如下:

           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

          頁碼數(shù)發(fā)生變化時,通過JavaScript指定for-each中的$PageNo變量.

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

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

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

                 用于對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)  編輯  收藏 所屬分類: 個人筆記
          主站蜘蛛池模板: 清原| 胶州市| 巴彦县| 阿鲁科尔沁旗| 资源县| 彭阳县| 那坡县| 大荔县| 若羌县| 晋中市| 望都县| 柏乡县| 读书| 白银市| 新晃| 湖南省| 大冶市| 集贤县| 娱乐| 临桂县| 通州市| 迭部县| 蒙阴县| 乌鲁木齐市| 浮梁县| 青龙| 嘉善县| 罗平县| 沁源县| 慈溪市| 澄江县| 水城县| 轮台县| 囊谦县| 日土县| 和田县| 沅陵县| 马边| 九寨沟县| 什邡市| 宁陕县|