Причина , почему вы не работаете, состоит в том, что вы не можете оценить выражения XSLT внутри элемента <xsl:text>
.
<xsl:text>
может содержать только буквенный текст, ссылки на сущности и # PCDATA .
Если вы переместите <xsl:value-of>
за пределы <xsl:text>
, будет работать следующее:
<img>
<xsl:attribute name="src">
<xsl:value-of select="node()" />
<xsl:text>.jpg</xsl:text>
</xsl:attribute>
</img>
Однако, выбор <xsl:value-of select="node()>
для <img>
в вашем примере будет включать возврат каретки и пробельные символы внутри элемента <img>
, что, вероятно, не то, что вы хотите в значении атрибута src
.
Вот почему Димитр Новатчев использовал normalize-space()
в своем ответе . Применяя это к примеру выше:
<img>
<xsl:attribute name="src">
<xsl:value-of select="normalize-space(node())" />
<xsl:text>.jpg</xsl:text>
</xsl:attribute>
</img>
Если вы избавитесь от <xsl:text>
, как подсказывает решение Фабиано , то вы также можете сделать это:
<img>
<xsl:attribute name="src"><xsl:value-of select="normalize-space(node())" />.jpg</xsl:attribute>
</img>