java - apache fop 嵌入式文件声明中的 Xslt 变量
问题描述
我的 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中吗?有人知道怎么做吗?
解决方案
使用以下形式的属性值模板
<pdf:embedded-file filename="{$name}" src="data:text/html;base64,{$content}"/>
如果您想计算(部分)XSLT 中文字结果元素的属性值。
推荐阅读
- ios - iOS Swift - 在保存屏幕截图之前执行 func
- javascript - 导航栏在粘贴时会增加宽度。为什么?
- android - React-native Android:无法生成签名的 APK:“没有这样的规模”
- gradle - Gradle 隐式运行另一个任务
- c# - 如何中途停止动画并在Unity中中转?
- scala - 空列表相等性如何工作?
- angular - 如何使用 formBuilder 实时修改字段的验证
- api - 使用 OCELOT 的 API 网关 - 错误 - 无法启动 Ocelot
- javascript - forEach 无法读取新的节点元素 - js
- azure - 切换到 Azure SignalR 服务后,Context.UserIdentifier 为 null