以文本方式查看主题

-  计算机科学论坛  (http://bbs.xml.org.cn/index.asp)
--  『 DOM/SAX/XPath 』  (http://bbs.xml.org.cn/list.asp?boardid=11)
----  [求助]请教一个XPath取整函数问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=11&rootid=&id=51926)


--  作者:poorfish
--  发布时间:8/28/2007 7:53:00 PM

--  [求助]请教一个XPath取整函数问题
想在每一个6的整数倍的photoset节点后(即第6,12,18,24...)输出一个<div class="clear"></div>,应该怎么写?

我用了一个if
<xsl:if test="//photoset[position() mod 6=0 ]">
但输出的结果是
id
<div class="clear"></div>
id
<div class="clear"></div>
id
<div class="clear"></div>
....

请问错在哪里,应该如何写?


XML数据结构
以下内容为程序代码:

<photosets cancreate="1">
 <photoset id="5" primary="2483" secret="abcdef"
  server="8" photos="4">
  <title>Test</title>
  <description>foo</description>
 </photoset>
 ...
 <photoset id="4" primary="1234" secret="832659"
  server="3" photos="12">
  <title>My Set</title>
  <description>bar</description>
 </photoset>
</photosets>

XSL代码

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" omit-xml-declaration="yes" indent="yes"/>

<xsl:template match="*">
 <xsl:for-each select="photosets/photoset">
 <div class="set"><xsl:value-of select="@id"></div>
  <xsl:if test="//photoset[position() mod 6=0 ]">
  <div class="clear"></div>
  </xsl:if>
 </xsl:for-each>
</xsl:template>

<xsl:template match="/">
 <xsl:apply-templates/>
</xsl:template>

</xsl:stylesheet>


--  作者:Qr
--  发布时间:8/29/2007 9:58:00 AM

--  
没有看完你的代码,但以下这行肯定是错的
<xsl:if test="//photoset[position() mod 6=0 ]">
此处不应该用//,当前路径也是photoset,所以直接用“.”号即可

建议去看一下XPath的相关内容。


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