Come concatenare una stringa in xsl: value-of select = "...?


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

C'è un modo per cancellare un'altra stringa

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

Ho bisogno di passare del testo all'attributo href oltre al valore della proprietà del report

Risposte:


148

Puoi usare la funzione xpath dal nome piuttosto sensato chiamata concat qui

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

Ovviamente, non deve essere testo qui, può essere un'altra espressione xpath per selezionare un elemento o un attributo. E puoi avere un numero qualsiasi di argomenti nell'espressione concat.

Nota, puoi utilizzare i modelli di valore degli attributi (rappresentati dalle parentesi graffe) qui per semplificare la tua espressione

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

2
@ TimC: Bene, ma qui la concat()funzione non è necessaria.
Dimitre Novatchev

Ho il seguente tag: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>e vorrei creare un campo nascosto in XSLT che accetta solo l'ID #. Come posso ottenerlo?
SearchForKnowledge

27

Tre risposte:

Semplice:

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

Utilizzando "concat":

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

Collegamento agli attributi suggerito da @TimC

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

2
Come notato da Dimitre, non è necessario il concatenamento qui:<img src="{//your/xpath}vmLogo.gif" />
Svish


5

Il modo più semplice per concatenare una stringa di testo statica a un valore selezionato consiste nell'usare elemento.

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

1

Il metodo più semplice è

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

quando la struttura XML è

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

0

Non è la soluzione più leggibile, ma puoi combinare il risultato di un valore di con testo normale:

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

1
Ciò ha alcuni problemi: tra le istruzioni XSLT, gli spazi vuoti vengono ignorati solo i nodi di testo; ma ora che hai uno spazio non bianco solo il nodo di testo ( ' Text'), verrà emesso uno spazio bianco (anche una nuova riga).
Alejandro
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.