我的xslt中有一个小节点,如:
<fo:block>
<fo:external-graphic src="data:image/png;base64, //base64 code//" />
</fo:block>
不要混淆我的主样式表,我创建了另一个x64lt,它将base64图像作为参数,如:
<xsl:param name="logo">data:image/png;base64, //base64 code//</xsl:param>
如果我将主样式表更改为:
.
.
<xsl:include href="image.xsl" />
.
.
<fo:block>
<fo:external-graphic>
<xsl:attribute name="src"><xsl:value-of select="$logo" /></xsl:attribute>
</fo:external-graphic>
</fo:block>
第一个我得到堆大小的错误,在使用-Xmx4096m之后我得到一个解析错误..当我在主样式表中嵌入了base64图像时,我不需要4gb堆和pdf i make有意图的图像。
使用Apache FOP 1.1并抱歉我的英语,而不是我的主要语言..
答案 0 :(得分:3)
我想你正在尝试使用属性值模板。使用{
和}
表示$logo
不是文字值,而是变量或参数。
<fo:external-graphic src="{$logo}" />
就像这样,它更加简洁,因为您不必键入xsl:value-of
。
否则,$logo
将存储为文字文本内容。阅读有关属性值模板here。
为了说明这一点:
<强>样式表强>
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:param name="logo">data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QNaRXhpZgAATU0AKgAAAAgADQEPAAIAAAAGAAAAqgEQ</xsl:param>
<fo:external-graphic src="{$logo}"/>
</xsl:template>
</xsl:stylesheet>
<强>输出强>
<?xml version="1.0" encoding="utf-8"?>
<fo:external-graphic xmlns:fo="http://www.w3.org/1999/XSL/Format" src="data:image/jpg;base64,/9j/4AAQSkZJRgABAQEASABIAAD/4QNaRXhpZgAATU0AKgAAAAgADQEPAAIAAAAGAAAAqgEQ"/>