call java Base64.Encoder.encodeToString
Posted: Mon May 25, 2015 10:25 pm
I'm trying to call the java.util.Base64.Encoder.encodeToString method in an xquery transformation. I'm using Oxygen 17.0 Editor which uses java 1.8 which includes the Base64 class and its nested Encoder class. I'm using SaxonEE 9.6.0.5 in my transformation configuration with "Allow calls to extended functions" enabled. When I attempt to validate the xquery I get:
Engine name: Saxon-EE XQuery 9.6.0.5
Severity: fatal
Description: XPST0017: Cannot find a matching 1-argument function named {java:java.util.Base64.Encoder}encodeToString().
Perhaps there is something about how I have to declare a nested class that I'm doing wrong? My java.lang.String methods all work fine.
My relevant code is:
xquery version "3.0";
declare namespace db="http://docbook.org/ns/docbook";
declare namespace string="java:java.lang.String";
declare namespace encoder="java:java.util.Base64.Encoder";
declare variable $currentFile external;
let $doc := doc($currentFile)
let $bibs := $doc//db:bibliomixed[@xml:id]
for $bib at $pos in $bibs
return
<xml>
{encoder:encodeToString(string:getBytes(string:new(replace(concat(($bib//db:author//db:surname)[1],($bib//db:author//db:firstname)[1], ($bib//db:pubdate)[1],($bib//db:title)[1] ),'[^a-zA-Z0-9]+', ''))))}
</xml>
Thanks,
Doug
Engine name: Saxon-EE XQuery 9.6.0.5
Severity: fatal
Description: XPST0017: Cannot find a matching 1-argument function named {java:java.util.Base64.Encoder}encodeToString().
Perhaps there is something about how I have to declare a nested class that I'm doing wrong? My java.lang.String methods all work fine.
My relevant code is:
xquery version "3.0";
declare namespace db="http://docbook.org/ns/docbook";
declare namespace string="java:java.lang.String";
declare namespace encoder="java:java.util.Base64.Encoder";
declare variable $currentFile external;
let $doc := doc($currentFile)
let $bibs := $doc//db:bibliomixed[@xml:id]
for $bib at $pos in $bibs
return
<xml>
{encoder:encodeToString(string:getBytes(string:new(replace(concat(($bib//db:author//db:surname)[1],($bib//db:author//db:firstname)[1], ($bib//db:pubdate)[1],($bib//db:title)[1] ),'[^a-zA-Z0-9]+', ''))))}
</xml>
Thanks,
Doug