¿Cómo concatizar una cadena a xsl: value-of select = "…?


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

¿Hay alguna forma de cancat otra cadena para

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

Necesito pasar algo de texto al atributo href además del valor de la propiedad del informe

Respuestas:


148

Puede usar la función xpath con un nombre bastante sensato llamada concat aquí

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

Por supuesto, no tiene que ser texto aquí, puede ser otra expresión xpath para seleccionar un elemento o atributo. Y puede tener cualquier número de argumentos en la expresión concat.

Tenga en cuenta que puede hacer uso de las Plantillas de valor de atributo (representadas por las llaves) aquí para simplificar su expresión

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

2
@TimC: Bien, pero la concat()función no es necesaria aquí.
Dimitre Novatchev

Tengo la siguiente etiqueta: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>y me gustaría crear un campo oculto en XSLT que solo tome el número de identificación. ¿Cómo puedo lograrlo?
SearchForKnowledge

27

Tres respuestas:

Sencillo :

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

Usando 'concat':

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

Atajo de atributos como lo sugiere @TimC

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

2
Como señaló Dimitre, no necesita el concat aquí:<img src="{//your/xpath}vmLogo.gif" />
Svish


5

La forma más fácil de concanear una cadena de texto estático a un valor seleccionado es usar 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

El método más sencillo es

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

cuando la estructura XML es

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

0

No es la solución más legible, pero puede mezclar el resultado de un valor de con texto sin formato:

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

1
Esto tiene algunos problemas: entre las instrucciones XSLT, se ignoran los nodos de texto de los espacios en blanco; pero ahora que tiene un nodo de texto no solo de espacio en blanco ( ' Text'), se generará un espacio en blanco (incluso una nueva línea).
Alejandro
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.