Bir dizeyi xsl: value-of select = "… 'e nasıl birleştirebilirim?


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

Başka bir dizeyi atamanın bir yolu var mı?

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

Rapor özelliği değerine ek olarak href özniteliğine biraz metin iletmem gerekiyor

Yanıtlar:


151

Burada concat adlı oldukça mantıklı adlandırılmış xpath işlevini kullanabilirsiniz.

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

Tabii ki, burada metin olmak zorunda değil, bir eleman veya öznitelik seçmek başka bir xpath ifadesi olabilir. Ve concat ifadesinde herhangi bir sayıda argümanınız olabilir.

İfadenizi basitleştirmek için burada Öznitelik Değeri Şablonlarını (kaşlı ayraçlarla gösterilen) kullanabilirsiniz.

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

2
@TimC: Güzel, ancak burada concat()işlev gerekli değil.
Dimitre Novatchev

Şu etiketim var: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>ve XSLT'de yalnızca kimlik numarasını alan gizli bir alan oluşturmak istiyorum. Bunu nasıl başarabilirim?
SearchForKnowledge

27

Üç Cevap:

Basit:

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

'Concat' kullanarak:

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

@TimC tarafından önerilen öznitelik kısayolu

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

2
Dimitre'nin belirttiği gibi, burada konsata ihtiyacınız yok:<img src="{//your/xpath}vmLogo.gif" />
Svish


5

Statik bir metin dizesini seçilen bir değerle birleştirmenin en kolay yolu, öğesi.

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

1

En kolay yöntem

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

XML Yapısı olduğunda

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

0

En okunaklı çözüm değil, ancak sonucu bir-değerinden düz metinle karıştırabilirsiniz:

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

1
Bunun bazı sorunları vardır: XSLT komutları arasında, yalnızca beyaz boşluk metin düğümleri göz ardı edilir; ancak artık beyaz boşluğunuz olmadığına göre yalnızca metin düğümünüz ( ' Text'), beyaz boşluk (hatta yeni satır) çıkacaktır.
Alejandro
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.