xslt - 在 XSLT 中加载二进制文件 - base64 编码

标签 xslt base64 saxon

我们需要加载一个二进制文件并对文件进行 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/

相关文章:

xslt - 输出层次结构中当前节点的深度

java - 如何将 jasper 报告从 xalan 切换到 saxon?

xml - 使用 XSLT 删除 XML 节点

ios - 如何在 swift 中创建 base 64 数据

java - 编码字符串是否有最大的 Base64 大小?

arrays - 如何将 64 进制转换为字节数组?

xml - SaxonHE 9 使用 XSLT 从非常大的文件创建多个文件

xslt - 撒克逊 CE 和 XQuery?文档表明没有 XQuery,否则有示例吗?

pdf - 使用apache fop 0.95在pdf中从左到右显示阿拉伯语文本

xslt - 验证 FO 文件