我正在尝试使用 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</*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(使用前将#替换为@)