如何将字符串连接到xsl:value-of select =“…?


92
<a>
    <xsl:attribute name="href"> 
     <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    </xsl:attribute>
</a>    

有什么办法可以将另一个字符串

<xsl:value-of select="/*/properties/property[@name='report']/@value"  />

除了报告属性值外,我还需要传递一些文本到href属性

Answers:


148

您可以在此处使用名为concat的相当合理的xpath函数

<a>
   <xsl:attribute name="href">
      <xsl:value-of select="concat('myText:', /*/properties/property[@name='report']/@value)" />
   </xsl:attribute>
</a>  

当然,这里不必一定是文本,它可以是选择元素或属性的另一个xpath表达式。您可以在concat表达式中包含任意数量的参数。

请注意,您可以在此处使用属性值模板(由花括号表示)来简化表达

<a href="{concat('myText:', /*/properties/property[@name='report']/@value)}"></a>

2
@TimC:很好,但是concat()这里不需要该功能。
Dimitre Novatchev'5

我有以下标记:<a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>并且我想在XSLT中创建一个仅包含ID#的隐藏字段。我该如何实现?
SearchForKnowledge

27

三个答案:

简单:

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="//your/xquery/path"/>
        <xsl:value-of select="'vmLogo.gif'"/>
    </xsl:attribute>
</img>

使用'concat':

<img>
    <xsl:attribute name="src">
        <xsl:value-of select="concat(//your/xquery/path,'vmLogo.gif')"/>                    
    </xsl:attribute>
</img>

@TimC建议的属性快捷方式

<img src="{concat(//your/xquery/path,'vmLogo.gif')}" />

2
正如Dimitre所指出的,您无需在此进行关注:<img src="{//your/xpath}vmLogo.gif" />
Svish 2013年


5

将静态文本字符串连接为选定值的最简单方法是使用 元件。

<a>
  <xsl:attribute name="href"> 
    <xsl:value-of select="/*/properties/property[@name='report']/@value" />
    <xsl:text>staticIconExample.png</xsl:text>
  </xsl:attribute>
</a>

1

最简单的方法是

  <TD>
    <xsl:value-of select="concat(//author/first-name,' ',//author/last-name)"/>
  </TD>

当XML结构是

<title>The Confidence Man</title>
<author>
  <first-name>Herman</first-name>
  <last-name>Melville</last-name>
</author>
<price>11.99</price>

0

不是最易读的解决方案,但是您可以将value-of的结果与纯文本混合:

<a>
  <xsl:attribute name="href"> 
    Text<xsl:value-of select="/*/properties/property[@name='report']/@value"/>Text
  </xsl:attribute>
</a>

1
这有一些问题:在XSLT指令之间,仅空白文本节点被忽略;但是现在您有了一个非空白的纯文本节点(' Text'),将输出空白(甚至换行)。
亚历杭德罗(Alejandro)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.