【发布时间】:2012-04-16 22:43:27
【问题描述】:
我有以下标记,一个混合了 TR 和一个或两个子 TD 的表格
<table>
<tr>
<td>
<p>XXX</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>XXX</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>XXX</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
<tr>
<td>
<p>YYYYYY</p>
</td>
<td>
<p>YYYYYY</p>
</td>
</tr>
</table>
我正在尝试使用 XSLT 1.0 将其转换为
<AAA>
XXX
<BBB>YYYYY</BBB>
<BBB>YYYYY</BBB>
...
</AAA>
<AAA>
XXX
<BBB>YYYYY</BBB>
<BBB>YYYYY</BBB>
...
</AAA>
...
从这可能是在 XSLT 中处理嵌套循环的最佳方式这一事实中抽象出来,XPath 表达式放入了什么???下面将选择当前 TR (XXX) 的所有 TR 兄弟姐妹,它们有两个 TD 孩子,但只到下一个 TR (XXX)。我根据它们有多少个 TD 子节点来区分包含 XXX 和 YYYYY 的节点。 1 = XXX,2 = YYYYY。
<xsl:for-each select="//table/tr">
<xsl:if test="count(td) = '1'">
XXX
</xsl:if>
<xsl:for-each select="???">
all YYYYY up until the next XXX
</xsl:for-each>
</xsl:for-each>
我有 "following-sibling::tr[child::td[following-sibling::td]" 但它与 YYYYY 匹配到最后 - 我如何让它只选择那些直到下一个TR 与 XXX?
谢谢!
【问题讨论】: