-1

以下会产生 xslt 编译错误:

<asp:hiddenfield runat="server" value="<xsl:value-of select="string[position()=2]"/>"  id="<xsl:value-of select="$ActionID"/>"></hiddenfield>

我怎样才能正确地让这个语句起作用?我尝试了以下方法,但均未成功:. . . ' " . . . " id="" />

<asp:hiddenfield runat="server" value="<xsl:value-of    select=&quot;string[position()=2]&quot;/>" id="<xsl:value-of select=&quot;$ActionID&quot;/>"></hiddenfield>

<asp:hiddenfield runat="server" value="<xsl:value-of select='string[position()=2]'/>" id="<xsl:value-of select='$ActionID'/>"></hiddenfield>

<asp:hiddenfield runat="server" value=&quot;<xsl:value-of select="string[position()=2]"/>&quot; id=&quot;<xsl:value-of select="$ActionID"/>&quot;></hiddenfield>

使用 concat、"、' 等的一系列其他不成功的尝试。我哪里错了?非常感谢所有提前回复。

4

1 回答 1

2

您需要在这里使用属性值模板!

试试这个代码

<asp:hiddenfield runat="server" value="{string[position()=2]}"  id="{$ActionID}"></asp:hiddenfield>

当您在属性中使用花括号时,这表明它是要计算的表达式,而不是字面输出。

这是另一种方法。

<asp:hiddenfield runat="server">
   <xsl:attribute name="value">
       <xsl:value-of select="string[position()=2]"/>
   </xsl:attribute>
   <xsl:attribute name="id">
       <xsl:value-of select="$ActionID"/>
   </xsl:attribute>

但是,如您所见,这更加冗长。如果您想要动态属性名称,或者您只想在某些条件下输出属性,您只需要使用xsl:attribute 。

于 2013-06-19T17:08:06.607 回答