0

我需要遍历具有文本字段的多节点节点,以输出到表格中。

这是 XML:

<upload-notification>
<delay-message-list>
    <delay-message>Could not get Health Number from Card Number = null</delay-message>
    <delay-message>In order to qualify for the Vitalitydrive Integrator, </delay-message>
</delay-message-list>

这是我尝试过的:

    <table width="800" align="left" class="normalFont" style="table-layout:fixed" border="1">
                        <col width="10%">
                            <col width="90%">
                                <tr bgcolor="lightgrey">
                                    <td align="left" bgcolor="lightgrey" width="800">
                                        please note:
                                    </td>
                                </tr>
                                <xsl:for-each select="/upload-notification/delay-message-list">
                                    <tr>
                                        <td>
                                        1
                                        </td>
                                        <td>
                                            <xsl:value-of select="//delay-message"/>
                                        </td>
                                    </tr>
                                </xsl:for-each>
                            </col>
                        </col>
                    </table>
                    <br/>
                </td>
            </tr>
        </table>

到目前为止,它只显示表中的一个字段。

4

1 回答 1

1

有了这个指令

<xsl:for-each select="/upload-notification/delay-message-list">

您正在尝试for-each遍历所有delay-message-list元素(只有一个)。相反,您需要select单个delay-message元素,然后在其中for-each获取value-of您当前正在查看的节点,而不是您当前的代码,它总是获取整个文档中第一个元素的值。 delay-message

<xsl:for-each select="/upload-notification/delay-message-list/delay-message">
    <tr>
        <td>1</td>
        <td>
            <xsl:value-of select="."/>
        </td>
    </tr>
</xsl:for-each>

如果您希望将行编号为 1、2、3 等,而不是全部编号为 1,那么您可以通过替换

        <td>1</td>

        <td><xsl:value-of select="position()" /></td>
于 2013-09-09T10:12:38.810 回答