在xsl-fo中设置图像src

时间:2014-06-13 13:10:04

标签: xml xslt pdf

我有xml文件,它们将提供图像文件的名称。

 <task>
      <header>Diagram</header>
      <image>image.png</image> 
 </task>

在我试图使用的xls-fo中:

 <xsl:template match="image">
    <fo:block>
        <fo:external-graphic>
            <xsl:attribute name="src">./<xsl:value-of select="image"/></xsl:attribute>
        </fo:external-graphic>
    </fo:block>
 </xsl:template>

这不会产生错误,但图片不会出现在pdf中。为了使图像显示,我必须硬编码文件的名称,如下所示:

 <xsl:attribute name="src">./image.png<xsl:value-of select="image"/></xsl:attribute>

如何从xml获取文件名以使用xsl中提供的路径。

1 个答案:

答案 0 :(得分:1)

您的模板已匹配image 。在其中,您位于该元素的上下文中,该元素没有image ,只有您想要的文本节点选择。当您在其中使用<xsl:value-of select="image"/>时,您实际上正尝试task/image/image之类的内容。

image中的value-of替换为.(节点的字符串值)或text()(其文本内容)。任何选项都会有相同的结果。

<xsl:template match="image">
    <fo:block>
        <fo:external-graphic>
            <xsl:attribute name="src">./<xsl:value-of select="."/></xsl:attribute>
        </fo:external-graphic>
    </fo:block>
 </xsl:template>