一个小问题,请老大们帮忙!!!(甚急)

peppi 2002-12-26 11:02:37
我有一XHTML:
<table>
<tr>
<td>*****</td> <!--td和tr数量不一定-->
</tr>
<tr>
<td class="title"> <!--只有我想用的这一类td有class属性,而且-->
<!--值是"title"-->
adadf
</td>
</tr>
<tr>
<td>******</td> <!--td和tr数量不一定-->
</tr>
<tr>
<td class="title"> <!--只有我想用的这一类td有class属性,而且-->
<!--值是"title"-->
adadf
</td>
</tr>
</table>

我想通过XSL生成一XML:
<a>
<b m="adadf"> <!--对应那个带class="title"的td-->
<c> <!--对应于两个带class的td中间的tr-->
*******
</c>
</b>
<b m="adadf"> <!--对应那个带class="title"的td-->
<c>
******
</c>
</b>
</a>

我的目的是想把带class="title"的td提高一级,然后让所有在上下两个带class的td中间的tr已及下属都归到一个td里.

我现在遇到的问题是:
如何在XHTML中找出在两个TD中间的TR,我现在的XSL转换出来的是:TD个数正确,但每个TD里都有所有的TR,这很不爽,呵呵,我想先求出所有符合条件(class="title")的TD的个数,然后选取所有在第一和第二中间,第二和第三中间,等等的TR,但怎么判断"TR在两个TD中间"呢?????高手,怎么办?????
...全文
31 点赞 收藏 6
写回复
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
peppi 2002-12-27
up
回复
peppi_2000 2002-12-27
up
回复
saucer 2002-12-27
为什么没有人回答你?因为你的XML例子不明确,看你要的结果,再看你的要求“然后让所有在上下两个带class的td中间的tr已及下属都归到一个td里”?

下面的XSLT是基于你的XML例子的:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="table">
<a>
<xsl:apply-templates select="//td[@class='title']" />
</a>
</xsl:template>

<xsl:template match="td[@class='title']">
<b m="{.}">
<c>
<xsl:variable name="pred" select="preceding::td[@class][1]" />
<xsl:choose>
<xsl:when test="$pred">
<xsl:variable name="predlist" select="$pred/preceding::td[not(@class)]" />
<xsl:for-each select="preceding::td[not(@class) and count(. | $predlist) != count($predlist)]">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:when>
<xsl:otherwise>
<xsl:for-each select="preceding::td[not(@class)]">
<xsl:value-of select="." />
</xsl:for-each>
</xsl:otherwise>
</xsl:choose>
</c>
</b>
</xsl:template>
</xsl:stylesheet>
回复
peppi 2002-12-26
需要帮忙
回复
peppi 2002-12-26
up
回复
peppi 2002-12-26
up
回复
发动态
发帖子
XML/XSL
创建于2007-09-28

8779

社区成员

XML/XSL相关问题讨论专区
申请成为版主
社区公告
暂无公告