如何用XSLT拼接文本与value-of生成图片Href链接?
解决XSLT拼接图片Href链接的问题
嘿,我来帮你搞定这个拼接链接的需求!其实XSLT里做字符串拼接并不复杂,主要是用对函数或者语法就行,下面分不同XSLT版本给你具体方案:
方案1:XSLT 1.0 通用写法(最常用)
XSLT 1.0里可以用concat()函数直接拼接多个字符串,或者用更简洁的属性值模板(大括号语法),两种方法都能搞定:
方法A:使用concat函数
<xsl:template match="你的目标节点"> <img> <!-- 动态生成href属性 --> <xsl:attribute name="href"> <xsl:value-of select="concat( 'http://server/area/graphic.aspx?ns=', number, <!-- 这里直接写number节点的XPath,不用套value-of --> '&nocache=5555' )" /> </xsl:attribute> <!-- 可以添加图片的alt等其他属性 --> <xsl:attribute name="alt">动态生成的图片</xsl:attribute> </img> </xsl:template>
方法B:属性值模板(更简洁)
这种写法不用单独写<xsl:attribute>,直接在标签属性里用大括号包裹XPath表达式,XSLT会自动计算并替换:
<xsl:template match="你的目标节点"> <img href="http://server/area/graphic.aspx?ns={number}&nocache=5555" alt="动态生成的图片" /> </xsl:template>
方案2:XSLT 2.0+ 进阶写法
如果你的环境支持XSLT 2.0及以上,还可以用||运算符来做字符串拼接,写法更直观:
<xsl:template match="你的目标节点"> <img href="{ 'http://server/area/graphic.aspx?ns=' || number || '&nocache=5555' }" alt="动态生成的图片" /> </xsl:template>
注意事项
- 一定要把URL里的
&转成&,因为XML语法里不允许直接出现未转义的&,否则会报错。 - 如果
number节点可能为空或者不存在,可以加个判断处理默认值,比如:<img href="http://server/area/graphic.aspx?ns={if (normalize-space(number) != '') then number else '0'}&nocache=5555" />
内容的提问来源于stack exchange,提问作者Gustavo Jose
相关产品推荐
相关产品推荐

