从base64内容写二进制文件



我有base64编码内容(图像文件(,我想使用xslt/xpath 2.0写入外部文件。

这是我的输入文件

<root>
  <img>iVBORw0KGgoAAAANSUhEUgAABAAAAAMAAQMAAACAdIdOAAAABlBMVEUAAAD///
    +l2Z/dAAABpElEQVR42u3OQQ0AMAgEsHOAf7Wbhn0GIa2C5jSLgICAgICAgICAgI
    CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
    CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgQB6UgICAgICAgICAgICAgI
    CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
    CAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI
    CAgICAgICAgICAgICAgICAgICAgICAgMDKwB8CAgICAgICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
    ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu2BC6XQXOr9fnZDAAAAAElFTkSuQmCC</img>
</root>

这是我尝试编写文件的尝试:

<xsl:stylesheet version="2.0" 
  xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:file="http://expath.org/ns/file">
  <xsl:template match="img">
    <myimg>
      <xsl:variable name="filename" select="'hello.png'"/>
      <xsl:attribute name="filename" select="$filename"/>
      <xsl:value-of select="file:write-binary($filename,xs:base64Binary(.))" />
    </myimg>
  </xsl:template>
</xsl:stylesheet> 

但是"什么都没发生",这意味着我将myimg作为root标签(预期(获得了XML文件,但没有写入当前目录中的文件。我该怎么办?

我将saxon-pe-9.7.0.15与氧XML


编辑:使用hello.png作为文件名(减少混乱(

这似乎与使用撒克逊人和氧气内的expath文件模块有关,因为当我使用saxon在氧气外运行xslt时,文件是在与xml输入和STYLESHEET同一目录中创建的文件代码,但是内部的氧气使用<xsl:message select="'current-dir() ', file:current-dir()"/>表示文件模块使用其他目录来读取并写入。

最新更新