我试图从一个属性转换我编码的base64 HTML内容,并将其放置在使用XLST的HTML内容中,希望有人可以提供帮助。如何将base64字符串解码为XSLT中的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来注册函数,以便样式表可以调用它。 – keshlam
你当然可以用纯XSLT编写它,虽然它会相当复杂,即使你至少知道字节流的编码始终是UTF-8(从基础64获取一个字符串实际上是从基础64获得一个字节流,然后从中获取一个字符串,第二步取决于编码)。 –