我有一个包含img标签的xml文件
<img>
source
</img>
我想要生成:
<img src="source.jpg">
我尝试了类似这样的方法:
<img>
<xsl:attribute name="src">
<xsl:text>
<xsl:value-of select="node()" />.jpg
</xsl:text>
</xsl:attribute>
</img>
但它不起作用。
我有一个包含img标签的xml文件
<img>
source
</img>
我想要生成:
<img src="source.jpg">
<img>
<xsl:attribute name="src">
<xsl:text>
<xsl:value-of select="node()" />.jpg
</xsl:text>
</xsl:attribute>
</img>
但它不起作用。
用途:
<img src="{normalize-space()}.jpg"/>
<img>
元素。<xsl:text>
元素内无法评估 XSLT 表达式。
<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
属性值。这就是为什么Dimitre Novatchev在他的回答中使用了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>
<img>
<xsl:attribute name="src">
<xsl:value-of select="concat(node(), '.jpg')"/>
</xsl:attribute>
</img>
我没有测试过,但应该可以工作。=)
<img src="
 source
.jpg"/>
,这可能不是@liysd想要的结果。按照@Dimitre Novatchev建议的使用normalize-space()函数,你的答案将变得有效。 - Mads Hansen<img>
<xsl:attribute name="src">
<xsl:value-of select="my_photo/@href" />
</xsl:attribute>
</img>
<my_photo href="folder/poster.jpg" />