我需要遍历具有文本字段的多个节点,以输出到表格中。
这是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>
到目前为止它只显示表中的一个字段。
答案 0 :(得分: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>