【发布时间】:2014-02-06 04:09:24
【问题描述】:
我正在尝试将我的编码 base64 HTML 内容从属性转换并使用 XLST 将其放入 HTML 内容中,希望有人能提供帮助。
我有这个字符串:
<p><b>Hello!</b><span>This is a span</span></p>
这是base64编码的值:
PHA+PGI+SGVsbG8hPC9iPjxzcGFuPlRoaXMgaXMgYSBzcGFuPC9zcGFuPjwvcD4=
XML 数据如下所示:
<Data Get="True">
<Result TextFlow="PHA+PGI+SGVsbG8hPC9iPjxzcGFuPlRoaXMgaXMgYSBzcGFuPC9zcGFuPjwvcD4=">
</Result>
</Data>
我最后一次尝试是使用this:
fn:cast($XML/Data/Result/@TextFlow,'xs:base64Binary','xs:String',false())
That code send this error:
Unknown function - Name and number or arguments do not match any function signature in the static context.
感谢您的帮助!
【问题讨论】:
-
Base64 转换不是我通常建议在 XSLT 中进行的; XSLT 不能很好地构建字符的位旋转构造。我建议你调用一个扩展函数来进行转换。不幸的是,半标准的 EXSLT 扩展集不包含该操作,因此您可能必须自己查找或编写它,然后使用 XSLT 处理器的 API 注册该函数,以便您的样式表可以调用它。
-
你当然可以用纯 XSLT 编写它,尽管它会相当复杂,即使你至少知道字节流的编码总是 UTF-8(从 base 64 获取字符串真的很一个来自 base 64 的字节流,然后从中获取一个字符串,第二步取决于编码)。