XSL:FO如何从xml获取img src,然后将其用作src for fo:external-graphic

时间:2016-08-11 00:46:55

标签: xml xslt xslt-1.0 xsl-fo

问题:如何从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>

有没有办法做到这一点?谢谢。 :)

2 个答案:

答案 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>