2015-05-05 33 views
0

我們需要加載一個二進制文件,base64對包含結果的文件進行編碼輸出。二進制文件放在服務器上,只能通過URI訪問。在XSLT中加載二進制 - base64編碼

我已經寫了下面的XSLT腳本,但它只適用於通過文件系統可訪問的文件。如果我插入URI,而不是文件路徑,我自然會得到一個錯誤:URI模式不是'文件'。

任何人都可以告訴我如何使這個代碼工作的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> 

回答

0

我不認爲有什麼辦法做到這一點無需編寫自己的Java擴展功能。

0

對於下一個撒克遜版本,我已經實現了擴展功能來滿足這個要求。我已經發布的代碼在

https://saxonica.plan.io/issues/2369

,如果你願意,你可以將這個在您的應用程序。

相關問題