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

Xslt variable in apache fop embedded file declarations

我的 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 参数中使用变量?也许我可以在 java 中以编程方式将附件添加到我的 pdf 中?有人知道怎么做吗?

我会尝试这样的事情:

<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>

使用

形式的属性值模板
<pdf:embedded-file filename="{$name}" src="data:text/html;base64,{$content}"/>

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