当我试图处理xml文件中的数据时,我遇到了这个问题: 我无法找到一种方法来附加for-each语句中的数据。我想将它们作为参数发送到js函数。
以下是xml的示例:
<events>
<event>
<eventType>some type</eventType>
<date>12/24/1999</date>
<participants>
<participant>
<participant_name>Mike</participant_name>
</participant>
<participant>
<participant_name>John</participant_name>
</participant>
</participants>
。 。 。
这是xsl文件:
<xsl:for-each select="event">
<tr>
<xsl:variable name="eventType"select="eventType"> </xsl:variable>
<xsl:variable name="date" select="date"></xsl:variable>
<td>
<xsl:value-of select="$eventType" />
</td>
<td>
<xsl:value-of select="$date" />
</td>
<xsl:for-each select="participants/participant">
<td>
<xsl:value-of select="participant_name"/>
</td>
</xsl:for-each>
<td>
<button type="button" onClick="myFunc('{$date} {$eventType}')">
</td>
</tr>
我的目标是在最后一列是一个将所有行参数发送到js函数的按钮时创建一个表。上面的代码工作正常,但我似乎找不到附加方法的方法participant_name因为其范围。我搜索了一个解决方案并没有找到它。希望在这里找到帮助,谢谢。
答案 0 :(得分:0)
你非常接近 - 你已经在participant
的范围内了,所以你只需要向下导航到participant_name
:
<xsl:for-each select="participants/participant">
<td>
<xsl:value-of select="participant_name" />
</td>
</xsl:for-each>
修改
我刚刚重新阅读了您的问题,我相信我错过了发送到您的javascript函数的部分?如果是这样,您可以在另一个<xsl:variable>
<xsl:variable name="participants">
<xsl:for-each select="participants/participant">
<xsl:value-of select="participant_name" />
<xsl:if test="not(position() = last())">
<xsl:text>,</xsl:text>
</xsl:if>
</xsl:for-each>
</xsl:variable>
<button type="button" onClick="myFunc('{$date} {$eventType} {$participants}')" />
最后删除逗号courtesy of here