使用 XSLT 显示时间表

2023-12-27

我正在尝试使用 XSLT 显示大学课程时间表。我的 DTS 如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT timetable (day,day,day,day,day,day,day)>
<!ELEMENT day (session)*>
<!ELEMENT session (begin,end,(course?))>
<!ELEMENT course (#PCDATA)>
<!ELEMENT begin (#PCDATA)>
<!ELEMENT end (#PCDATA)>

我想在日/小时表中显示所有课程,看起来像这样(请原谅糟糕的设计):

问题是,我想做一个for each子句,但仅针对常规数字,而不针对 xml 的某些部分。 XSLT 可以做到这一点吗?例如,它可能看起来像这样:

/* for each time = 8..17, do: */
    <xsl:for-each select="timetable/day">
        <xsl:value-of select="session[[begin&lt;/*time*/ or begin=/*time*/]/course" />
    </xsl:for-each>

您可以使用递归

<xsl:template name="for_i_from_8_to_17">
    <xsl:param name="i">8</xsl:param> <!-- initial value -->
    <!-- do what you have to do -->
    <xsl:if test="not($i = 17)">
        <xsl:call-template name="for_i_from_8_to_17">
            <xsl:with-param name="i">
        <xsl:value-of select="$i + 1">
        </xsl:with-param>
        </xsl:call-template>
    </xsl:if>
</xsl:template>

(稍微改编自[电子邮件受保护] http://sourceware.org/ml/xsl-list/2000-08/msg01503.html)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用 XSLT 显示时间表 的相关文章

随机推荐