XSLT将base64显示为图像

时间:2014-11-19 20:05:24

标签: xml xslt xsl-fo

我的XML包含一个包含base64格式图像的节点。 我已经尝试了很多东西,但我无法使用xslt-fo(apache)生成PDF。

这是我要显示的XML节点:

.....
<pregunta101>
    <listaImagenes>
        <contenido>base64content</contenido>
        <ruta>c:\\ssss\\aaaa.jpg</ruta>
        <nombre>codigoFOTO</nombre>
    </listaImagenes>
    <listaImagenes>
.....

如果我把内容而不是“contenido”变量,它会完美地显示它,但我不能在foreach中显示它或直接读取xml节点。

<fo:table-row number-columns-spanned="2">
    <fo:table-cell padding-right="10pt" padding-top="10pt" padding-left="10pt">
        <xsl:for-each select="solicitude/preguntasCheckList/pregunta101/listaImagenes">
            <xsl:value-of select="." />
            <fo:block text-align="left">
                <fo:external-graphic src="url('data:image/jpeg;base64,contenido)"/>                                             
            </fo:block>
        </xsl:for-each>
     </fo:table-cell>
</fo:table-row>

1 个答案:

答案 0 :(得分:2)

仅使用在线XML-FO处理器进行测试,但如果更改

则应该可以使用
<fo:external-graphic src="url('data:image/jpeg;base64,contenido)"/> 

<fo:external-graphic src="url('data:image/jpeg;base64,{contenido})"/>

通过这种调整,我得到你的示例XML作为输入

<fo:external-graphic src="url('data:image/jpeg;base64,base64content)"/>

如果不将节点/变量名称放入大括号 - {}中,它将仅作为文字值处理而不是被解释。

供参考:http://www.w3.org/TR/xslt#attribute-value-templates