How to concat a string to xsl:value-of select="...?

XsltXpath

Xslt Problem Overview


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

Is there any way to concat another string to

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

I need to pass some text to href attribute in addition to the report property value

Xslt Solutions


Solution 1 - Xslt

You can use the rather sensibly named xpath function called concat here

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

Of course, it doesn't have to be text here, it can be another xpath expression to select an element or attribute. And you can have any number of arguments in the concat expression.

Do note, you can make use of Attribute Value Templates (represented by the curly braces) here to simplify your expression

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

Solution 2 - Xslt

Three Answers :

Simple :

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

Using 'concat' :

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

Attribute shortcut as suggested by @TimC

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

Solution 3 - Xslt

Use:

<a href="wantedText{/*/properties/property[@name='report']/@value)}"></a>

Solution 4 - Xslt

The easiest way to concat a static text string to a selected value is to use element.

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

Solution 5 - Xslt

Easiest method is

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

when the XML Structure is

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

Solution 6 - Xslt

Not the most readable solution, but you can mix the result from a value-of with plain text:

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

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionHanumanthView Question on Stackoverflow
Solution 1 - XsltTim CView Answer on Stackoverflow
Solution 2 - XsltNinjanoelView Answer on Stackoverflow
Solution 3 - XsltDimitre NovatchevView Answer on Stackoverflow
Solution 4 - XsltDaviideSnowView Answer on Stackoverflow
Solution 5 - XsltMarshallView Answer on Stackoverflow
Solution 6 - XsltKhinView Answer on Stackoverflow