XSLT: 在属性内使用 'xsl:value-of'

5

I have the following XSL transformation:

<xsl:for-each select="refsect1[@id = 'seealso']/para/citerefentry">
  /// <seealso cref=""/>
  <xsl:value-of select="refentrytitle" />
</xsl:for-each>

我该如何将refentrytitle的值放在模板中seealso标签的cref属性中?

2个回答

6

我不明白如何将refentrytitle的值放置在模板中seealso标记的cref属性中。

只需将表达式放在花括号中(这称为属性值模板或简称AVT语法),像这样:

<seealso cref="{refentrytitle}"/>

@Luca:当然,例如{string-length(refentrytitle)}。通常情况下,您可以像在xsl:value-of select中一样使用XPath函数。 - Grzegorz Szpetkowski
这是更紧凑和灵活的实现结果的方式。谢谢! - Luca

4
您可以这样做:
<xsl:for-each select="refsect1[@id = 'seealso']/para/citerefentry">
  /// <xsl:element name="seealso">
    <xsl:attribute name="cref">
      <xsl:value-of select="refentrytitle" />
    </xsl:attribute>
  </xsl:element>
</xsl:for-each>

或者你可以直接这样做:

<xsl:for-each select="refsect1[@id = 'seealso']/para/citerefentry">
  /// <seealso cref="{refentrytitle}" />
</xsl:for-each>

是否可以强制使用短标签<seealso/>? - Luca
我不确定你是否可以通过前者来控制这个,也就是说可能取决于XSLT处理器的决定。 - James

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接