Javascript 如何将XSL数据传输到select范围之外?

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>

当我试图处理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>

某种类型
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}')" />