Javascript 如何将XSL数据传输到select范围之外?
当我试图处理xml文件中的数据时,我面临以下问题: 我找不到从for-each语句中附加数据的方法。我想将它们作为参数发送到js函数 以下是xml的示例:Javascript 如何将XSL数据传输到select范围之外?,javascript,xml,xslt,Javascript,Xml,Xslt,当我试图处理xml文件中的数据时,我面临以下问题: 我找不到从for-each语句中附加数据的方法。我想将它们作为参数发送到js函数 以下是xml的示例: <events> <event> <eventType>some type</eventType> <date>12/24/1999</date> <participants> <participant>
<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>
某种类型
12/24/1999
迈克
约翰
.
.
.
下面是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函数。上面的代码运行良好,但由于其范围,我似乎找不到附加参与者名称的方法。我寻找了一个解决方案,但没有找到。希望在此处找到帮助,谢谢。您非常接近-您已经在
参与者的范围内,因此您只需导航到参与者的姓名即可:
<xsl:for-each select="participants/participant">
<td>
<xsl:value-of select="participant_name" />
</td>
</xsl:for-each>
编辑
我刚刚重读了你的问题,我想我错过了关于发送到javascript函数的部分?如果是这样,您可以在另一个
,
上次删除逗号对不起,现在是正确的代码。代码本身就很好。问题是如何像在其他元素的数据中一样将particpant_名称传输到myFunc()非常感谢您的快速回复。它在js函数方面工作。但是我有办法在列中显示PRTICITANT_名称吗?我的意思是在代码块中添加?您可能希望在问题中包含所需的输出HTML。请正确缩进XSLT代码。这里似乎有两个不同的要求:1)生成td列表,2)为js函数创建逗号分隔的列表。假设您不想将
传递给javascript,那么您需要重复
位,并在每个参与者周围包含一个td
包装器,该包装器被省略了吗?另一件值得一提的事情是,我们还需要为你的js函数输入参与者的名字(例如,容纳像O'Hara
)
<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}')" />