Як зв'язати рядок із xsl: value-of select = "…?


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

Чи є спосіб визначити інший рядок

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

Мені потрібно передати трохи тексту в атрибут href на додаток до значення властивості звіту

Відповіді:


148

Ви можете використовувати досить толково функцію з ім'ям XPATH під назвою CONCAT тут

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

Звичайно, тут це не повинен бути текст, це може бути інший вираз xpath для вибору елемента або атрибута. І ви можете мати будь-яку кількість аргументів у виразі concat.

Зверніть увагу, ви можете використовувати шаблони значень атрибутів (представлені фігурними дужками) для спрощення виразу

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

2
@TimC: Добре, але concat()функція тут не потрібна.
Dimitre Novatchev

У мене є такий тег: <a title="" href="https://stackoverflow.com/page.cfm?id=425">Anders, John</a>і я хотів би створити приховане поле в XSLT, яке приймає лише ID #. Як я можу цього досягти?
SearchForKnowledge

27

Три відповіді:

Просто:

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

Використання 'concat':

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

Ярлик атрибута, як запропонував @TimC

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

2
Як зазначив Димитр, вам тут не потрібен конкат:<img src="{//your/xpath}vmLogo.gif" />
Свіш,


5

Найпростіший спосіб зв’язати статичний текстовий рядок із вибраним значенням - використовувати елемент.

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

1

Найпростіший метод

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

коли структура XML є

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

0

Не найбільш читабельне рішення, але ви можете змішати результат із значення-значення з простим текстом:

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

1
Це має деякі проблеми: між інструкціями XSLT пробіли ігноруються лише текстовими вузлами; але тепер, коли у вас є не пробіл, лише текстовий вузол ( ' Text'), буде виведено пробіл (навіть новий рядок).
Алехандро
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.