2017-06-26 15 views
0

私はbase64でコード化された内容(画像ファイル)を持っています。これをXSLT/XPath 2.0を使って外部ファイルに書きたいと思います。base64の内容からバイナリファイルを書きます

これは

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

し、ファイルの書き込みには、この私の私の試み私の入力ファイルです:私のようにmyimgでXMLファイルを取得することを意味する、

<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> 

をしかし、「何も起こりません」ルートタグ(予想される)が、現在のディレクトリに書き込まれたファイルはありません。私はどうしたらいいですか?

私は酸素XMLとサクソン-PE-9.7.0.15を使用


編集:それはサクソンおよび使用に関連する問題を思わ

+0

oXygenは変換に関する問題を示していますか? 'generate-id()'で作成されたファイル名に接尾辞を付けずに欲しいですか?そして、あなたはファイルが作成されていないと確信していますか?見つけにくいかもしれません。 ''を追加して、少なくとも何を探すべきかを知ることができます。 –

+0

@MartinHonnen変換に問題はありません。はい、私はこのファイル名が必要だと確信しています。はい、ファイルは作成されていません。 (私は属性としてファイル名を持っているので、何を探すか分かります)。 – topskip

+0

oXygenの内部で何が起こっているのか分かりません。oXygenの外でSaxon 9.7 EEでコードを試してみました。 oXygenのタグを追加したり、サポートフォーラムや電子メールサポートを試してより速いレスポンスを試したりすることもできます。最初に絶対ファイルパスを試してみると、oXygenにエラーメッセージが表示されないので、ファイルがどこに書かれているのかどうかがテストされます。ファイルが別のディレクトリに書き込まれてしまうのだろうかと思います。 –

答えて

2

(混乱を軽減するために)ファイル名としてhello.pngを使用oXygen内のファイルモジュールをEXPATするのは、SaxonでoXygenの外側でXSLTを実行するとXML入力とスタイルシートのコードと同じディレクトリにファイルが作成されるためですが、oXygenの内部では<xsl:message select="'current-dir() ', file:current-dir()"/>を使用すると、に書き込む。

関連する問題