【发布时间】:2020-11-22 01:17:38
【问题描述】:
我需要使用 XSLT 1 转换将 XML 文档转换为 base64。
我已尝试使用此模板进行此操作:https://github.com/ilyakharlamov/xslt_base64
这是我的 XSL:
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:b64="https://github.com/ilyakharlamov/xslt_base64"
version="1.0">
<xsl:output method="text" encoding="utf-8" />
<xsl:strip-space elements="*"/>
<xsl:include href="base64.xsl"/>
<xsl:template match="/">
<xsl:call-template name="b64:encode" >
<xsl:with-param name="asciiString">
<xsl:copy-of select="." />
</xsl:with-param>
</xsl:call-template>
</xsl:template>
</xsl:stylesheet>
这可行,但它会去除所有 XML 标记,只对文本进行编码。我需要实际编码所有内容(整个文档,原样)。将输出方法更改为 XML 没有帮助。
【问题讨论】:
-
如果要对 XML 文档进行 base64 编码,为什么还需要 XSLT?直接在 XML 输入文档上使用您拥有的任何用于 base64 编码文件的库。
-
你好@MartinHonnen,这是一个很好的问题......它是一个更大的转换的一部分(它输出一个带有一堆字段的json对象+一个字段
original,它应该包括整个XML doc,以 base64 编码 - 不是我的要求,所以不确定为什么需要这个字段)。我简化了 xsl,只是为了问这个问题而没有任何不必要的噪音。 -
您需要将 XML 序列化为字符串,而 XSLT 1 也只能在您编写大量代码或使用另一个库(例如 Evan Lenz 的库)时才能做得很好。
-
谢谢马丁。使用 Evan Lenz xml-to-string.xsl 做到了...
标签: python xml xslt xslt-1.0 lxml