我有一个如下所示的 HTML 时间表:
+------+--------+----------+---------+---------+- --------+ | 时间 | 星期一 | 星期二 |星期三| 星期四 | 星期五 | +======+=========+===========+=========+==========+= ========+ | 8:00 | 事件1 | | | | | +------+--------+----------+---------+---------+- --------+ | 9:00 | 事件1 | | | | | +------+--------+----------+---------+---------+- --------+ | 10:00| 事件1 | | 事件2 | | | | | | | 事件3 | | | +------+--------+----------+---------+---------+- --------+ | 11:00| | | 事件3 | | | +------+--------+----------+---------+---------+- --------+ | 12:00| | | 事件3 | | | +------+--------+----------+---------+---------+- --------+
<table>
<tr>
<td> Time </td>
<td> Monday </td>
<td> Tuesday </td>
<td> Wednesday </td>
<td> Thursday </td>
<td> Friday </td>
</tr>
<tr>
<td> 8:00 </td>
<td> event1 </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> 9:00 </td>
<td> event1 </td>
<td> </td>
<td> </td>
<td> </td>
<td> </td>
</tr>
<tr>
<td> 10:00 </td>
<td> event1 </td>
<td> </td>
<td> event2 </br> event3 </td> <!-- Comparing to this one while reading the one below -->
<td> </td>
<td> </td>
</tr>
<tr>
<td> 11:00 </td>
<td> </td>
<td> </td>
<td> event3 </td> <!-- Reading this one -->
<td> </td>
<td> </td>
</tr>
<tr>
<td> 12:00 </td>
<td> </td>
<td> </td>
<td> event3 </td>
<td> </td>
<td> </td>
</tr>
</table>
是否有可能在单个 for-each 循环中<td>
访问与其父级相比位于相同位置但在前面的位置<tr>
?
我试图做这样的事情,它工作正常,除了 event2 和 event3 同时。
<xsl:variable name="periodes">
<xsl:for-each select="table/tr/td[position() = 2]"> <!-- And to the same for every columns -->
<xsl:if test="not(.=preceding::td)">
<starts><xsl:value-of select="../td[position() =1]"/></starts>
</xsl:if>
<xsl:if test="not(.=following::td)">
<ends><xsl:value-of select="../td[position() =1]"/></ends>
<eventName><xsl:value-of select="."/></eventName>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<xsl:for-each select="exslt:node-set($periodes)/*">
<day>1</day>
<eventName><xsl:value-of select="eventName"/></eventName>
<starts><xsl:value-of select="starts"/></starts>
<ends><xsl:value-of select="ends"/></ends>
</xsl:for-each>
最重要的是不能按预期工作,这种方法有点烦人,因为我需要 5 个不同的 for-each 循环。他们是我可以实现这一目标的一种方式吗?
输出应该类似于
<events>
<event>
<day>1</day>
<eventName>event1</eventName>
<starts>8:00</starts>
<ends>11:00</ends>
</event>
<event>
<day>3</day>
<eventName>event2</eventName>
<starts>10:00</starts>
<ends>11:00</ends>
</event>
<event>
<day>3</day>
<eventName>event3</eventName>
<starts>10:00</starts>
<ends>13:00</ends>
</event>
</events>