2017-01-20 10 views
0

文字列をバイナリbase64に変換する方法はありますか?私は多くの参照を見てきましたが、それは私の最後には機能しませんでした。文字列をバイナリbase64に変換する

<RootElement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
<Data> 
    <Binary> 
     <RawData>VGhpcyBlbGVtZW50IHNob3VsZCBjb252ZXJ0IHN0cmluZyB0byBiaW5hcnkgYmFzZTY0Lg==</RawData> 
    </Binary> 
</Data> 

私はXSLTを作成し、私がオンライン見てきた名前空間の使用:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dp="http://www.datapower.com/extensions"> 
<xsl:output method="xml" version="1.0" indent="yes"/> 
<xsl:strip-space elements="*"/> 
<xsl:template match="@*|node()"> 
    <xsl:copy> 
     <xsl:apply-templates select="@*|node()"/> 
    </xsl:copy> 
</xsl:template> 
<xsl:template match="RawData"> 
    <xsl:element name="RawData"> 
     <xsl:value-of select="dp:encode(., 'base-64')"/> 
    </xsl:element> 
</xsl:template> 
</xsl:stylesheet> 
を私が生成する必要が

<RootElement xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> 
    <Data> 
     <Binary> 
       <RawData>This element should convert string to binary base64.</RawData> 
     </Binary> 
    </Data> 
</RootElement> 

:たとえば、私は、この入力ファイルを持っています

ありがとうございます。

+2

XSLTプロセッサはどちらですか?名前空間を含めるだけでは、関数を利用できるようにはなりません。名前空間を実装するライブラリもインストールする必要があります。誰かが答えるのに十分な情報を提供していません。 –

+0

使用しているXSLTプロセッサーとXSLTバージョンを教えてください。 MicrosoftのMSXSL拡張は、JScript/C#/などでカスタム関数を定義するために使用できる ''要素を提供します。データの変換を行います。 – Madeyedexter

+2

Saxon XSLTプロセッサを使用している場合は、特定の機能を使用できます。http://www.saxonica.com/html/documentation/functions/saxon/string-to-base64Binary.htmlを参照してください。 – potame

答えて

1

任意のXSLTプロセッサのために働く純粋なXSLT 1.0ソリューションがあります:JAXP、サクソン、Xalanの、xsltprocのは、Microsoft:

  1. ダウンロードbase64.xsl
  2. ダウンロードbase64_binarydatamap.xml
  3. 使用XSLT 1.0:

    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:b64="https://github.com/ilyakharlamov/xslt_base64"> 
    <xsl:output method="xml"/> 
    <xsl:include href="base64.xsl"/> 
    <xsl:template match="@*|node()"> 
        <xsl:copy> 
         <xsl:apply-templates select="@*|node()" /> 
        </xsl:copy> 
    </xsl:template> 
    <xsl:template match="/RootElement/Data/Binary/RawData"> 
        <xsl:call-template name="b64:encode"> 
         <xsl:with-param name="asciiString" select="text()"/> 
        </xsl:call-template> 
    </xsl:template> 
    

関連する問題