新书推介:《语义网技术体系》
作者:瞿裕忠,胡伟,程龚
   XML论坛     W3CHINA.ORG讨论区     计算机科学论坛     SOAChina论坛     Blog     开放翻译计划     新浪微博  
 
  • 首页
  • 登录
  • 注册
  • 软件下载
  • 资料下载
  • 核心成员
  • 帮助
  •   Add to Google

    >> 本版讨论XSL,XSLT,XSL-FO,CSS等技术
    [返回] 中文XML论坛 - 专业的XML技术讨论区XML.ORG.CN讨论区 - XML技术『 XSL/XSLT/XSL-FO/CSS 』 → 问个position()的问题 查看新帖用户列表

      发表一个新主题  发表一个新投票  回复主题  (订阅本版) 您是本帖的第 31410 个阅读者浏览上一篇主题  刷新本主题   树形显示贴子 浏览下一篇主题
     * 贴子主题: 问个position()的问题 举报  打印  推荐  IE收藏夹 
       本主题类别:     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客楼主
    发贴心情 问个position()的问题

    代码如下:
    test.xml
    <NewDataSet>
      <table>...</table>
      <table>...</table>
    </NewDataSet>

    test.xsl
    <?xml version="1.0" encoding="utf-8"?>

    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="/NewDataSet">

      <table>
          <xsl:for-each select="table[position()&gt;10 and position()&lt;30]" >

            <xsl:if test="position() mod 5=1">
              <xsl:variable name="nowP" select="position()"></xsl:variable>
          <tr>

            <td style="background-color:green">
              <xsl:value-of select="$nowP"></xsl:value-of>
            </td>
          </tr>
            </xsl:if>
          </xsl:for-each>
        </table>

      </xsl:template>

    </xsl:stylesheet>

    输出为:
    1
    6
    11
    16
    ...

    可以看出,position()不是从table[position()&gt;10 and position()&lt;30]" 的 范围开始计数,而是从头开始,如果想要得到
    11
    16
    21
    ...
    的效果,应该怎么做?急用!谢谢。


    另外,在一个别的地方要引用 <xsl:for-each select="Table[position()&gt;=1 and position() &lt;= 15]">中的select属性,不知道怎么才可以定位到这个属性,这个select属性已经不是第一个,可不可以用start-with实现?select="//@select[start-with('Table')]"?


       收藏   分享  
    顶(0)
      




    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/12 14:06:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客2
    发贴心情 
    怎么没有人理我?在线等,自己顶一个。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/12 15:54:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客3
    发贴心情 
    对于第二个问题,我试了
    document.XSLDocument.selectSingleNode("//*[start-with(@select,'Table')]");
    就是定位不到。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/12 19:17:00
     
     fukui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:145
      门派:IEEE.ORG.CN
      注册:2006/11/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fukui发送一个短消息 把fukui加入好友 查看fukui的个人资料 搜索fukui在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fukui的博客4
    发贴心情 
    我吃完饭后帮你看看...

    ----------------------------------------------
    XML新人,请大家指教!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 12:48:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客5
    发贴心情 
    呵呵,等待中。。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 13:22:00
     
     fukui 帅哥哟,离线,有人找我吗?
      
      
      等级:大一(猛啃高等数学)
      文章:17
      积分:145
      门派:IEEE.ORG.CN
      注册:2006/11/12

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给fukui发送一个短消息 把fukui加入好友 查看fukui的个人资料 搜索fukui在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看fukui的博客6
    发贴心情 
    呵呵,没研究出来,请斑竹吧

    ----------------------------------------------
    XML新人,请大家指教!

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 14:28:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客7
    发贴心情 
    请斑竹出来解答一下吧,一直在等。
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 16:43:00
     
     Qr 帅哥哟,离线,有人找我吗?
      
      
      威望:9
      等级:博士二年级(版主)
      文章:4392
      积分:29981
      门派:XML.ORG.CN
      注册:2004/5/15

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给Qr发送一个短消息 把Qr加入好友 查看Qr的个人资料 搜索Qr在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Qr的主页 引用回复这个贴子 回复这个贴子 查看Qr的博客8
    发贴心情 
    实际上是你的代码没写好,position()这个东东很容易用错地方,慢慢理解吧。
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:template match="NewDataSet">

      <table>
          <xsl:for-each select="table[position()&gt;10 and position()&lt;30 and position() mod 5=1]" ><!--这里的position()反映XML的position()-->

          <tr>

            <td>
              <xsl:value-of select="position()"></xsl:value-of><!--这里的position()反映过滤后的position()-->
            </td>
            <td style="background-color:green">
              <xsl:value-of select="."></xsl:value-of>
            </td>
          </tr>

          </xsl:for-each>
        </table>

      </xsl:template>

    </xsl:stylesheet>

    ----------------------------------------------
    没人帮忙,那就靠自己,自己才是最好的老师!本人拒绝回答通过站内短消息提出的问题!

    blog:http://Qr.blogger.org.cn

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 18:02:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客9
    发贴心情 
    呵呵,学习中,谢谢斑竹,另一个问题中
    document.XSLDocument.selectSingleNode("//*[start-with(@select,'Table')]");
    为什么定位不到 <xsl:for-each select="Table[position()&gt;=1 and position() &lt;= 15]">的select属性?应该怎么定位?
    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 19:58:00
     
     211211211 帅哥哟,离线,有人找我吗?
      
      
      等级:大一新生
      文章:9
      积分:91
      门派:XML.ORG.CN
      注册:2005/12/1

    姓名:(无权查看)
    城市:(无权查看)
    院校:(无权查看)
    给211211211发送一个短消息 把211211211加入好友 查看211211211的个人资料 搜索211211211在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 引用回复这个贴子 回复这个贴子 查看211211211的博客10
    发贴心情 
    还是不行。
    我干脆把整个代码贴出,代码是基于Qr的动态分页代码改的。
    test.xml
    <?xml version="1.0" encoding="utf-8" ?>

    <NewDataSet>
      <Table>
        <ssID>12</ssID>
        <ssName>反对体系的力量</ssName>
        <PicfilePath>D:\works\</PicfilePath>
        <DownloadCount>1</DownloadCount>
      </Table>
      <Table>
        <ssID>13</ssID>
        <ssName>美国和体系</ssName>
        <PicfilePath>D:\works\</PicfilePath>
        <DownloadCount>2</DownloadCount>
      </Table>
    ....
    </NewDataSet>

    test.xsl

    <?xml version="1.0" encoding="utf-8"?>

    <xsl:stylesheet version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

      <xsl:template match="/">
        <html>
          <head>
            <script>
              <xsl:comment>
                <![CDATA[
                   var OnePageNum=15;
                   var PageNum=1;
                   var XMLPageNum=1;
                     function pages(Num)
                      {
                         stylesheet=document.XSLDocument;
                         source=document.XMLDocument;
                         nodes=source.documentElement.childNodes;
                         len=nodes.length;
                           for(i=1;i<=(len/OnePageNum);i++);
                            XMLPageNum=i;
                            var firstNum=0;
                            var lastNume=0;

                          if (Num=="first") {PageNum=1;}
                          if (Num=="previous") {if (PageNum>1) PageNum -=1;}
                          if (Num=="next") {if (PageNum<XMLPageNum) PageNum +=1;}
                          if (Num=="last") {PageNum =XMLPageNum;}

                          [color=#FF0000]sortField=document.XSLDocument.selectSingleNode("\\*[start-with(@select,'Table')]");[/color]

                          firstNum=OnePageNum*(PageNum-1)+1;
                          lastNum=OnePageNum*(PageNum-1)+OnePageNum;
                          text="position()>="+firstNum+" and position()<="+lastNum;

                           sortField.text=text;

                           Layer1.innerHTML=source.documentElement.transformNode(stylesheet);
                      }
                ]]>
              </xsl:comment>
            </script>
          </head>

          <body>


            <table align="center" width="500" >
              <tr>
                <td>
                  <button id="cmdfirstPage" class="keybutton" onclick="pages('first');">首页</button>
                  <button id="cmdpreviousPage" class="keybutton" onclick="pages('previous');" >上一页</button>
                  <button id="cmdnextPage" class="keybutton" onclick="pages('next');">下一页</button>
                  <button id="cmdlastPage" class="keybutton" onclick="pages('last');">尾页</button>
                </td>
              </tr>
            </table>
            <div id="Layer1" name="Layer1">
              <xsl:apply-templates select="NewDataSet" />
            </div>
          </body>

        </html>
      </xsl:template>

      <xsl:template match="/NewDataSet">
        <xsl:param name="totalItems">15</xsl:param>
        <table width="100%" border="0" cellpadding="0" cellspacing="0">
          <xsl:for-each  select="Table[position()&gt;=15 and position() &lt;= 30 and position() mod 5=1]">
            <xsl:variable select="position()" name="nowP"></xsl:variable>
            <tr>
              <xsl:value-of select="position()"/>
            </tr>
              <tr>
                <td>
                  <table width="139" height="154" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td colspan="2">
                        <div align="center">
                          <a href="" >
                            <img width="64" height="102" border="0" class="n_img_big" >
                              <xsl:attribute name="src">
                                ../images/<xsl:value-of select="../Table[$nowP]/ssName"/>/2.jpg
                              </xsl:attribute>
                            </img>
                          </a>
                        </div>
                      </td>
                    </tr>

                    <tr>
                      <td width="70%">
                        <div align="right">下载次数:</div>
                      </td>
                      <td class="n_text">

                        <xsl:value-of select="../Table[$nowP]/DownloadCount"/>
                      </td>
                    </tr>
                  </table>
                </td>
                <td>
                  <table width="139" height="154" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td colspan="2">
                        <div align="center">
                          <a href="" >
                            <img width="66" height="99" border="0" class="n_img_big" >
                              <xsl:attribute name="src">
                                ../images/<xsl:value-of select="../Table/$nowP+1]/ssName"/>/2.jpg
                              </xsl:attribute>
                            </img>
                          </a>
                        </div>
                      </td>
                    </tr>

                    <tr>
                      <td width="70%">
                        <div align="right">下载次数:</div>
                      </td>
                      <td class="n_text">

                        <xsl:value-of select="../Table[$nowP+1]/DownloadCount"/>
                      </td>
                    </tr>
                  </table>
                </td>
                <td>
                  <table width="139" height="154" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td colspan="2">
                        <div align="center">
                          <a href="" >
                            <img src="" width="66" height="98" border="0" class="n_img_big" >
                              <xsl:attribute name="src">
                                ../images/<xsl:value-of select="../Table/[$nowP+2]/ssName"/>/2.jpg
                              </xsl:attribute>
                            </img>
                          </a>
                        </div>
                      </td>
                    </tr>

                    <tr>
                      <td width="70%">
                        <div align="right">下载次数:</div>
                      </td>
                      <td class="n_text">
                        <xsl:value-of select="../Table[$nowP+2]/DownloadCount"/>
                      </td>
                    </tr>
                  </table>
                </td>
                <td>
                  <table width="139" height="154" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td colspan="2">
                        <div align="center">
                          <a href="" >
                            <img  width="66" height="98" border="0" class="n_img_big" >
                              <xsl:attribute name="src">
                                ../images/<xsl:value-of select="../Table[$nowP+3]/ssName"/>/2.jpg
                              </xsl:attribute>
                            </img>
                          </a>
                        </div>
                      </td>
                    </tr>

                    <tr>
                      <td width="70%">
                        <div align="right">下载次数:</div>
                      </td>
                      <td class="n_text">
                        <xsl:value-of select="../Table[$nowP+3]/DownloadCount"/>
                      </td>
                    </tr>
                  </table>
                </td>
                <td>
                  <table width="139" height="154" border="0" cellpadding="0" cellspacing="0">
                    <tr>
                      <td colspan="2">
                        <div align="center">
                          <a href="" >
                            <img width="74" height="88" border="0" class="n_img_big" >
                              <xsl:attribute name="src">
                                ../images/<xsl:value-of select="../Table[$nowP+4]/ssName"/>/2.jpg
                              </xsl:attribute>
                            </img>
                          </a>
                        </div>
                      </td>
                    </tr>

                    <tr>
                      <td width="70%">
                        <div align="right">下载次数:</div>
                      </td>
                      <td class="n_text">
                        <xsl:value-of select="../Table[$nowP+4]/DownloadCount"/>
                      </td>
                    </tr>
                  </table>
                </td>
              </tr>
      
          </xsl:for-each>
        </table>
      </xsl:template>

    </xsl:stylesheet>

    注:附图为结果
    1
    2
    3

    而不是预期的
    16
    21
    26
    而且由于定位不到 <xsl:for-each select="Table[position()&gt;=15 and position() &lt;= 30 and position() mod 5=1]">的select属性,上下翻页无效。请Qr帮忙指点一下。这个问题困扰我好几天了。


    此主题相关图片如下:
    按此在新窗口浏览图片

    点击查看用户来源及管理<br>发贴IP:*.*.*.* 2006/11/13 20:29:00
     
     GoogleAdSense
      
      
      等级:大一新生
      文章:1
      积分:50
      门派:无门无派
      院校:未填写
      注册:2007-01-01
    给Google AdSense发送一个短消息 把Google AdSense加入好友 查看Google AdSense的个人资料 搜索Google AdSense在『 XSL/XSLT/XSL-FO/CSS 』的所有贴子 访问Google AdSense的主页 引用回复这个贴子 回复这个贴子 查看Google AdSense的博客广告
    2024/4/29 3:33:02

    本主题贴数16,分页: [1] [2]

    管理选项修改tag | 锁定 | 解锁 | 提升 | 删除 | 移动 | 固顶 | 总固顶 | 奖励 | 惩罚 | 发布公告
    W3C Contributing Supporter! W 3 C h i n a ( since 2003 ) 旗 下 站 点
    苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
    207.031ms