问题:如何从src
元素中获取img
属性,然后将src
的值复制到变量中,然后将变量设置为src
元素的fo:external-graphic
?
假设我有一个XML文档,其图像如下所示:
<diffreport>
<css />
<diff>
<p>
<span class="diff-html-removed" id="removed-diff-0" previous="first-diff"
changeId="removed-diff-0" next="added-diff-0">
<img alt="" id="Rxed6OQAKXfCYA"
src="D:\udu\img1.jpg" changeType="diff-removed-image" />
</span>
</p>
</diff>
注意:假设每个src
元素的img
路径都是动态的。
我确认这段代码可以正常工作,但它并不好,因为它是硬编码的。我真的很想知道如何更换 &#34; url(&#39; D:\ udu \ img1.jpg&#39;)&#34; 使用变量,以便代码是动态的。
<!-- Image -->
<xsl:template match="img">
<fo:external-graphic
src="url('D:\udu\img1.jpg')"></fo:external-graphic>
</xsl:template>
有没有办法做到这一点?谢谢。 :)
答案 0 :(得分:1)
你可以尝试
<xsl:template match="img">
<fo:external-graphic
src="{concat('file:///', translate(@src, '\', '/'))}" />
</xsl:template>
将获得D:\udu\img1.jpg
并将其称为file:///D:/udu/img1.jpg
答案 1 :(得分:0)
使用属性值模板,将对其进行评估,以便从XML中获取@src
的值。见https://www.w3.org/TR/xslt#attribute-value-templates
<!-- Image -->
<xsl:template match="img">
<fo:external-graphic src="url('{@src}')" />
</xsl:template>