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

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>

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')}" />

2
Seperti dicatat oleh Dimitre, Anda tidak perlu concat di sini:<img src="{//your/xpath}vmLogo.gif" />
Svish


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>

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>

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>

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.