Html 如何在XSL中比较来自不同父级的两个元素

Html 如何在XSL中比较来自不同父级的两个元素,html,xslt-1.0,xpath-1.0,Html,Xslt 1.0,Xpath 1.0,我有一个HTML时间表,如下所示: +------+--------+----------+---------+----------+--------+ | Time | Monday | Tuesday |Wednesday| Thursday | Friday | +======+========+==========+=========+==========+========+ | 8:00 | event1 | | | |

我有一个HTML时间表,如下所示:

+------+--------+----------+---------+----------+--------+ | Time | Monday | Tuesday |Wednesday| Thursday | Friday | +======+========+==========+=========+==========+========+ | 8:00 | event1 | | | | | +------+--------+----------+---------+----------+--------+ | 9:00 | event1 | | | | | +------+--------+----------+---------+----------+--------+ | 10:00| event1 | | event2 | | | | | | | event3 | | | +------+--------+----------+---------+----------+--------+ | 11:00| | | event3 | | | +------+--------+----------+---------+----------+--------+ | 12:00| | | event3 | | | +------+--------+----------+---------+----------+--------+ +------+--------+----------+---------+----------+--------+ |时间|周一|周二|周三|周四|周五| +======+========+==========+=========+==========+========+ |8:00 |事件1 | | | || +------+--------+----------+---------+----------+--------+ |9:00 |事件1 | | | || +------+--------+----------+---------+----------+--------+ |10:00 |事件1 |事件2 || || | |事件3 | || +------+--------+----------+---------+----------+--------+ |11:00 | | |事件3 | || +------+--------+----------+---------+----------+--------+ |12:00 | | |事件3 | || +------+--------+----------+---------+----------+--------+

时间
星期一
星期二
星期三
星期四
星期五
8:00      
事件1
9:00      
事件1
10:00     
事件1
事件2
事件3 11:00 事件3 12:00 事件3
是否可以在单个for-each循环中访问与其父循环处于相同位置但在前面的
中的

我尝试过做类似的事情,除了同时进行的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>

1.
最重要的是,它不能按预期工作,这种方法有点烦人,因为我需要5个不同的循环。他们是我实现这一目标的途径吗

输出应该类似于

<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>

1.
事件1
8:00
11:00
3.
事件2
10:00
11:00
3.
事件3
10:00
13:00

当您内联包含XML标记时,必须将它们括在后引号中,使其成为代码格式;否则它们就会消失。我已经帮你修好了。谢谢,我没注意到它们已经消失了。
<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>