Bagaimana menggabungkan string ke xsl: value-of select = "…?

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

Apakah ada cara untuk mengirim string lain ke

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

Saya perlu meneruskan beberapa teks ke atribut href selain nilai properti laporan

Hanumanth
sumber

Jawaban:

150

Anda dapat menggunakan fungsi xpath yang dinamai secara pantas disebut concat di sini

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

Tentu saja, tidak harus berupa teks di sini, ini bisa menjadi ekspresi xpath lain untuk memilih elemen atau atribut. Dan Anda dapat memiliki sejumlah argumen dalam ekspresi concat.

Perhatikan, Anda dapat menggunakan Template Nilai Atribut (diwakili oleh tanda kurung kurawal) di sini untuk menyederhanakan ekspresi Anda

<a href="{concat('myText:', /*/properties/property[@name='report']/@value)}"></a>
Tim C
sumber
2
@ TimC: Bagus, tapi concat()fungsinya tidak diperlukan di sini.
Dimitre Novatchev
Saya memiliki tag berikut: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>dan saya ingin membuat bidang tersembunyi di XSLT yang hanya mengambil ID #. Bagaimana saya bisa mencapai itu?
SearchForKnowledge
27

Tiga Jawaban:

Sederhana:

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

Menggunakan 'concat':

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

Atribut pintasan seperti yang disarankan oleh @TimC

<img src="{concat(//your/xquery/path,'vmLogo.gif')}" />
Ninjanoel
sumber
2
Seperti dicatat oleh Dimitre, Anda tidak perlu concat di sini:<img src="{//your/xpath}vmLogo.gif" />
Svish
16

Penggunaan :

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

Cara termudah untuk menggabungkan string teks statis ke nilai yang dipilih adalah dengan menggunakan elemen.

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

Metode termudah adalah

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

ketika Struktur XML

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

Bukan solusi yang paling mudah dibaca, tetapi Anda dapat menggabungkan hasil dari nilai-dari dengan teks biasa:

<a>
  <xsl:attribute name="href"> 
    Text<xsl:value-of select="/*/properties/property[@name='report']/@value"/>Text
  </xsl:attribute>
</a>
Khin
sumber
1
Ini memiliki beberapa masalah: antara instruksi XSLT, hanya node teks spasi putih yang diabaikan; tetapi sekarang Anda tidak memiliki spasi hanya teks node ( ' Text'), spasi (bahkan baris baru) akan menjadi output.
Alejandro