web-dev-qa-db-fra.com

Comment concaténer une chaîne en xsl: value-of select = "...?

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

Est-il possible d'annuler une autre chaîne à

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

J'ai besoin de passer du texte à l'attribut href en plus de la valeur de la propriété report

87
Hanumanth

Vous pouvez utiliser la fonction xpath assez judicieusement appelée concat ici

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

Bien sûr, il n'est pas nécessaire que ce soit du texte ici, il peut s'agir d'une autre expression xpath pour sélectionner un élément ou un attribut. Et vous pouvez avoir un nombre quelconque d'arguments dans l'expression concat.

Notez que vous pouvez utiliser ici des modèles de valeur d'attribut (représentés par des accolades) pour simplifier votre expression.

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

Trois réponses:

Facile :

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

Utiliser 'concat':

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

Raccourci d'attribut suggéré par @TimC

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

tiliser:

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

Le moyen le plus simple de concaténer une chaîne de texte statique avec une valeur sélectionnée consiste à utiliser élément.

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

La méthode la plus simple est

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

quand la structure XML est

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

Ce n'est pas la solution la plus lisible, mais vous pouvez mélanger le résultat d'une valeur de avec du texte brut:

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