ThomasM: base64 in hexadezimal Umwandeln

Beitrag lesen

Hallo Arnold,

Vielen Dank für diese schon um einiges hilfreichere Antwort.
Leider zeigt Kernow 1.6 bei mir immernoch folgenden Fehler, den ich einfach nicht weg bekomme:

Ich gehe mal davon aus, dass hier eine aktuelle Saxon-Version im Hintergrund liegt, dann ist XSLT 2.0 nebst XPath 2.0 verwendbar.

XPath syntax error at char 32 on line 6 in {...4_string) cast as xs:hexBin...}:
    Undeclared namespace prefix {xp}

xp? Das sollte wohl xs lauten.

Ich habe das gepostete Beispiel so probiert:

<?xml version="1.0" encoding="ISO-8859-1"?>  
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
  xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:fn="http://www.w3.org/2005/xpath-functions"  
  exclude-result-prefixes="fn xs">  
  
  <xsl:output method="text" encoding="UTF-8"/>  
  
  <xsl:template match="/">  
  
    <xsl:variable name="base64_string" select="'VGVzdHN0cmluZw=='"/><!-- das Wort 'Teststring' base64_encoded -->  
    <xsl:variable name="hexbin_string" select="xs:base64Binary($base64_string) cast as xs:hexBinary"/>  
    <!-- oder  
    <xsl:variable name="hexbin_string" select="xs:hexBinary(xs:base64Binary($base64_string))"/>  
    -->  
    <xsl:value-of select="$hexbin_string"/><!-- 54657374737472696E67 -->  
  
  </xsl:template>  
  
</xsl:stylesheet>

Transformieren einfach gegen ein Dummy-XML-Dokument in der Form:

<?xml version="1.0" encoding="UTF-8"?>  
<test></test>

Grüße,
Thomas