1

このアプローチを使用して、xsl トランスフォーマーで画像を作成しています: XSLT: base64 データを画像ファイルに変換します。

私の問題は、作成されたイメージを参照する IMG タグを作成する方法です。これが私がやったことです:

<!-- CREATE TEMP IMAGE -->
<xsl:variable name="b64" select="b64:new(string(./swe:Text/swe:value))"/>
<xsl:variable name="fos" select="fos:new(string('./temp.jpeg'))"/>
<xsl:value-of select="fos:write($fos, b64:getBinaryValue($b64))"/>
<xsl:value-of select="fos:close($fos)"/>
<a>
    <xsl:attribute name="href">
        <xsl:value-of select="concat('./temp', '.jpeg')"/>
    </xsl:attribute>
    <img>
        <xsl:attribute name="src">
            <xsl:value-of select="concat('./temp', '.jpeg')"/>
        </xsl:attribute>
        <xsl:attribute name="align">TOP</xsl:attribute>
        <xsl:attribute name="width">100</xsl:attribute>
        <xsl:attribute name="height">75</xsl:attribute>
    </img>
</a>

上記の出力を取得して JTextPane に表示していますが、画像は常に壊れています。

相対パスの問題だと思いますが、xsl 内から絶対パスを取得する方法がわかりません。

編集:わかりました、JTextPanesがそれを処理できないため、imgタグで相対的な画像を参照できないことがわかりました。以下を使用して、これを機能させることができました。

<xsl:variable name="b64" select="b64:new(string(./swe:Text/swe:value))"/>
<xsl:variable name="fos" select="fos:new(string(concat('/temp/', @name, '.jpeg')))"/>
<xsl:value-of select="fos:write($fos, b64:getBinaryValue($b64))"/>
<xsl:value-of select="fos:close($fos)"/>
<img>
    <xsl:attribute name="src">
        <xsl:value-of select="concat('file:///C:/temp/', @name, '.jpeg')"/>
    </xsl:attribute>
    <xsl:attribute name="align">MIDDLE</xsl:attribute>
    <xsl:attribute name="width">200</xsl:attribute>
    <xsl:attribute name="height">150</xsl:attribute>
</img>

しかし、私は本当にそれが相対的である必要があります

システム定義の一時ディレクトリにアクセスする必要があります。

誰もこれの方法を知っていますか?

4

0 に答える 0