我有以下标记,一个混合了 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 匹配到最后 - 我如何让它只选择那些直到下一个带有 XXX 的 TR ?
谢谢!