XSLT从相对于绝对的附加URL

时间:2011-01-18 16:59:37

标签: image xslt url relative absolute

在我的XML文档中,我正在提取包含图像的<TextBlock>的内容。 XML显示:

<img src="/templates_soft/images/facebook.png" alt="twitter" />

当我查看页面时,图像不会显示,因为它与原始页面的路径不同。

我需要添加要显示的图像的其余URL。类似于http://www.mypage.com/的内容,以便从http://www.mypage.com/templates_soft/images/facebook.png

显示图片

有办法做到这一点吗?

2 个答案:

答案 0 :(得分:2)

使用

<img src="{$imageBase/}templates_soft/images/facebook.png" alt="twitter" />

其中名为$imageBase的xsl:变量被定义为包含必要的前缀(在您的情况下为"http://www.mypage.com")。

这是一个完整的XSLT解决方案

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>

 <xsl:param name="pimageBase" select="'http://www.mypage.com'"/>

    <xsl:template match="img">
   <img src="{concat($pimageBase, @src)}" alt="{@alt}"/>
  </xsl:template>
</xsl:stylesheet>

将此转换应用于以下XML文档

<img src="/templates_soft/images/facebook.png" alt="twitter" />

产生了想要的正确结果

<img src="http://www.mypage.com/templates_soft/images/facebook.png" alt="twitter"/>

答案 1 :(得分:0)

如果您使用XSLT,只需创建一个包含整个URL的XML,然后标记XSLT,使其包含XML文件中原始字段的“指针”。如果你绑定到一个控件,比如一个Grid,你可以行绑定并在那时添加信息,如果它比XSLT更容易。