2017-01-20 7 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 프로세서 작동 1.0 솔루션 순수 XSLT에게 있습니다 : JAXP, 색슨, Xalan에, Xsltproc, 마이크로 소프트 :

  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>