0

我想在这里看到要连接到 String abc=' 的变量 'vari' 的前几个字符:

href="{concat('abc=', substring-before('vari', '='))}"

这是整个片段:

<xsl:template match="report:subelement">
    <tr>
        <td>
            <message>
              <xsl:variable name="vari"  select="."></xsl:variable>
                   <xsl:copy-of select="." />
            </message>
        </td>
        <td>
           <button type="button"  onclick="window.location.href=this.getAttribute('href')"  href="{concat('abc=', substring-before('vari', '='))}" >Kill thread</button>
        </td>
    </tr>
</xsl:template>

这可能是一个微不足道的问题,但我只是在学习 xslt。

4

1 回答 1

0

您非常接近,但是:要访问变量的值,您必须使用美元 ( $) 作为前缀。不要将变量名放在撇号中。
因此尝试:

href="{concat('abc=', substring-before($vari, '='))}

这会引发错误,因为您的变量声明与用法不在同一上下文中。变量声明必须在同一元素中或在祖先中。将声明放在子元素模板的顶部或<tr元素中。

更新的工作模板:

<xsl:template match=""report:subelement">
    <xsl:variable name="vari"  select="."></xsl:variable>
    <tr>
        <td>
            <message>
                <xsl:copy-of select="." />
            </message>
        </td>
        <td>
            <button type="button"  onclick="window.location.href=this.getAttribute('href')" 
                    href="{concat('abc=', substring-before($vari, '='))}" >Kill thread</button>
        </td>
    </tr>
</xsl:template>
于 2013-05-21T13:49:01.580 回答