我有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中提供的路径。
答案 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>