You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在XSLT生成的表格中按日期匹配填充对应天气数据

解决方案

实现逻辑

  • 原代码的错误点是没有为7个星期列生成对应占位单元格,直接将温度内容输出到了错误列位。我们可以预先定义与表头顺序一致的星期列表,遍历每条天气数据时依次匹配星期列:匹配成功则填充天气和温度信息,匹配失败则输出空单元格占位,即可实现数据对应到正确星期列的效果。

完整修改后的XSLT代码

<xsl:stylesheet version = "1.0" 
xmlns:xsl = "http://www.w3.org/1999/XSL/Transform">
    <!-- 定义与表头顺序一致的星期缩写列表 -->
    <xsl:variable name="weekOrder" select="'MonTueWedThuFriSatSun'" />
    <xsl:template match = "/forecast">
        <html>
            <body>
                <h1>
                    <xsl:value-of select="@queryLocation"/>
                    [<xsl:value-of select="@queryTime"/>]
                </h1>
                <table border="1" width="100%">
                    <tr id="days" bgcolor="#FFA500" align="center">
                        <th>Date</th>
                        <th>Mon</th>
                        <th>Tue</th>
                        <th>Wed</th>
                        <th>Thu</th>
                        <th>Fri</th>
                        <th>Sat</th>
                        <th>Sun</th>
                    </tr>
                    <xsl:for-each select = "weather">
                        <xsl:sort select="@yyyymmdd"/>
                        <tr>
                            <!-- 左侧日期列 -->
                            <td bgcolor="#FFA500" align="center">
                                <xsl:value-of select = "date "/>
                                <xsl:variable name="month" select="month"/>
                                <xsl:choose>
                                    <xsl:when test="$month=1"> 一月</xsl:when>
                                    <xsl:when test="$month=2"> 二月</xsl:when>
                                    <xsl:when test="$month=3"> 三月</xsl:when>
                                    <xsl:when test="$month=4"> 四月</xsl:when>
                                    <xsl:when test="$month=5"> 五月</xsl:when>
                                    <xsl:when test="$month=6"> 六月</xsl:when>
                                    <xsl:when test="$month=7"> 七月</xsl:when>
                                    <xsl:when test="$month=8"> 八月</xsl:when>
                                    <xsl:when test="$month=9"> 九月</xsl:when>
                                    <xsl:when test="$month=10"> 十月</xsl:when>
                                    <xsl:when test="$month=11"> 十一月</xsl:when>
                                    <xsl:when test="$month=12"> 十二月</xsl:when>
                                </xsl:choose>
                            </td>
                            <!-- 循环生成7个星期列的单元格 -->
                            <xsl:for-each select="(//*)[position() <= 7]">
                                <xsl:variable name="currentWeekIdx" select="position()" />
                                <xsl:variable name="currentWeek" select="substring($weekOrder, ($currentWeekIdx - 1)*3 + 1, 3)" />
                                <td align="center">
                                    <xsl:if test="$currentWeek = ../dayOfWeek">
                                        <xsl:value-of select="../lowest"/>&#176; - <xsl:value-of select="../highest"/>&#176;
                                        <br/>
                                        <xsl:value-of select="../overall"/>
                                    </xsl:if>
                                </td>
                            </xsl:for-each>
                        </tr>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

效果说明

以上代码会自动匹配每条天气数据对应的星期,将温度、天气描述填充到对应列,其余列留空,完全符合预期效果。比如6月12日周六的天气数据会自动填充到Sat列,显示23°-28° 伴有雷暴多云。

内容的提问来源于stack exchange,提问作者moo moo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 06:09:02