我们需要加载一个二进制文件并对文件进行 Base64 编码,并将结果包含在输出中。二进制文件放置在服务器上,只能通过 URI 访问。
我编写了以下 XSLT 脚本,但它仅适用于可通过文件系统访问的文件。如果我插入 URI,而不是文件路径,我自然会收到错误:URI 方案不是"file"。
谁能告诉我如何让这段代码适用于 URI?
<xsl:stylesheet version="2.0" xmlns:java="java" xmlns:file="http://expath.org/ns/file" xmlns:saxon="http://saxon.sf.net/" xmlns:bin="http://expath.org/spec/binary" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions" xpath-default-namespace="http://rep.evenex.dk/schema/evenex/eBusiness_01">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:variable name="tiffPath">
<xsl:value-of select="'C:/CGI_tiff_files/165238_EM37010002609.tiff'"/>
<!--<xsl:value-of select="'https://www.dropbox.com/s/htw5ckxjfepye0y/altova.gif?dl=0'"/>-->
</xsl:variable>
<xsl:variable name="tiffBas64encoded">
<xsl:value-of select="file:read-binary($tiffPath)"/>
</xsl:variable>
<!--Tiff vars end-->
<xsl:element name="root">
<xsl:element name="base64EncodeTiff">
<xsl:attribute name="path"><xsl:value-of select="$tiffPath"/></xsl:attribute>
<xsl:value-of select="$tiffBas64encoded"/>
</xsl:element>
</xsl:element>
</xsl:template>
最佳答案
对于下一个 Saxon 版本,我实现了一个扩展函数来满足此要求。我已将代码发布于
https://saxonica.plan.io/issues/2369
如果您愿意,您可以将其合并到您的应用程序中。
关于xslt - 在 XSLT 中加载二进制文件 - base64 编码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30046348/