Wie kann ich einen String mit xsl verknüpfen: value-of select = "…?

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

Gibt es eine Möglichkeit, einen anderen String zu cancat

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

Ich muss zusätzlich zum Berichtseigenschaftswert Text an das href-Attribut übergeben

Hanumanth
quelle

Antworten:

147

Sie können die ziemlich vernünftig genannt XPath - Funktion aufgerufen verwenden concat hier

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

Natürlich muss es hier kein Text sein, es kann ein anderer xpath-Ausdruck sein, um ein Element oder Attribut auszuwählen. Der concat-Ausdruck kann beliebig viele Argumente enthalten.

Beachten Sie, dass Sie hier Attributwertvorlagen (dargestellt durch geschweifte Klammern) verwenden können, um Ihren Ausdruck zu vereinfachen

<a href="{concat('myText:', /*/properties/property[@name='report']/@value)}"></a>
Tim C.
quelle
2
@ TimC: Gut, aber die concat()Funktion ist hier nicht notwendig.
Dimitre Novatchev
Ich habe das folgende Tag: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>und ich möchte ein verstecktes Feld in XSLT erstellen, das nur die ID # akzeptiert. Wie kann ich das erreichen?
SearchForKnowledge
27

Drei Antworten:

Einfach:

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

Verwenden von 'concat':

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

Attributverknüpfung wie von @TimC vorgeschlagen

<img src="{concat(//your/xquery/path,'vmLogo.gif')}" />
Ninjanoel
quelle
2
Wie von Dimitre bemerkt, brauchen Sie das Concat hier nicht:<img src="{//your/xpath}vmLogo.gif" />
Svish
16

Verwendung :

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

Der einfachste Weg, eine statische Textzeichenfolge mit einem ausgewählten Wert zu verknüpfen, ist die Verwendung Element.

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

Die einfachste Methode ist

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

wenn die XML-Struktur ist

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

Nicht die am besten lesbare Lösung, aber Sie können das Ergebnis aus einem Wert von mit einfachem Text mischen:

<a>
  <xsl:attribute name="href"> 
    Text<xsl:value-of select="/*/properties/property[@name='report']/@value"/>Text
  </xsl:attribute>
</a>
Khin
quelle
1
Dies hat einige Probleme: Zwischen XSLT-Anweisungen werden nur Leerzeichen-Textknoten ignoriert. Jetzt, da Sie nicht nur einen Leerzeichen-Textknoten ( ' Text') haben, wird ein Leerzeichen (auch eine neue Zeile) ausgegeben.
Alejandro