if(args[0].isEmpty()) {
return Sequence.EMPTY_SEQUENCE;
}
try {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
EXISerializer exiSerializer = null;
if(args.length > 1) {
if(!args[1].isEmpty()) {
Item xsdItem = args[1].itemAt(0);
InputStream xsdInputStream = EXIUtils.getInputStream(xsdItem, context);
exiSerializer = new EXISerializer(baos, xsdInputStream);
}
else {
exiSerializer = new EXISerializer(baos);
}
}
else {
exiSerializer = new EXISerializer(baos);
}
Item inputNode = args[0].itemAt(0);
exiSerializer.startDocument();
inputNode.toSAX(context.getBroker(), exiSerializer, new Properties());
exiSerializer.endDocument();
return BinaryValueFromInputStream.getInstance(context, new Base64BinaryValueType(), new ByteArrayInputStream(baos.toByteArray()));
}
catch(IOException ioex) {
// TODO - test!
throw new XPathException(this, ErrorCodes.FODC0002, ioex.getMessage());