我正在尝试从Java代码发送字节数组作为xslt的参数。我在XSL中将类型声明为base64Binary,并将字节数组设置为参数。我收到一个错误,提供的值为字节。我究竟做错了什么?
XSL:-
<xsl:param name="attachmentBytes" as="xs:base64Binary" />
Java代码:
byte[] bytes = "SAMPLE".getBytes();
transformer.setParameter("attachmentBytes", bytes);
transformer.transform(new DOMSource(sourceDocument), new StreamResult(targetStream));
错误代码:
XPTY0004:变量值的必需项目类型为xs:base64Binary;提供的值的项目类型为xs:byte
最佳答案
XSLT
正在等待base64binary
,但您给出的是byte
,如果您不介意类型,则只需更改:
<xsl:param name="attachmentBytes" as="xs:base64Binary" />
通过
<xsl:param name="attachmentBytes" as="xs:byte" />
如果要保留base64binary检查this answer,该检查显示了如何从
byte[]
转换为base64binary
,基本上:StringBuilder sb = new StringBuilder();
sb.append("data:image/png;base64,");
sb.append(StringUtils.newStringUtf8(Base64.encodeBase64(imageByteArray, false)));
contourChart = sb.toString();