apache fop嵌入式文件声明中的Xslt变量

时间:2019-01-29 08:23:22

标签: java xslt attachment apache-fop

我的xsl文件中有一个嵌入式文件,例如:

<xsl:template match="$pathPrefix/tns:AdditionalInfoStruct/tns:AdditionalInfo/dtsf:File">      
      <pdf:embedded-file filename="file.txt" src="data:text/html;base64,c2tsZGFsa2RhbnNrbHhuYXNrbGRrbGFzZGp3amRvcGFzZGpsc2RrYXNjbXNrbGNtYXNrbGQ7YXNz"/>
</xsl:template>

上面的示例工作正常,但是当我想从我的xslt节点获取base64中的文件名和内容时,它不起作用。无法正常工作的示例:

<xsl:template match="$pathPrefix/tns:AdditionalInfoStruct/tns:AdditionalInfo/dtsf:File">      
<xsl:variable name="name" select="current()/dtsf:Name"/>
<xsl:variable name="content" select="current()/dtsf:Content"/>
      <pdf:embedded-file filename="$name" src="data:text/html;base64,$content"/>
</xsl:template>

为什么我不能在pdf:embedded标记中的文件名和src参数中使用变量? Mayby我可以以编程方式将附件添加到Java中的PDF中吗?有人知道吗?

2 个答案:

答案 0 :(得分:1)

我会尝试这样的事情:

<pdf:embedded-file>
    <xsl:attribute name="filename"><xsl:value-of select="$name"/></xsl:attribute>
    <xsl:attribute name="src">data:text/html;base64,<xsl:value-of select="$content"/></xsl:attribute>
</pdf:embedded-file>

答案 1 :(得分:1)

使用以下形式的属性值模板

<pdf:embedded-file filename="{$name}" src="data:text/html;base64,{$content}"/>

如果要计算XSLT中文字结果元素的属性值(的一部分)。