【问题标题】:Transform XML document to base64 using XSLT 1使用 XSLT 1 将 XML 文档转换为 base64
【发布时间】: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


【解决方案1】:

根据 Martin Honnen 的 cmets,我是这样做的:

<?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:import href="xml-to-string.xsl"/>
  <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:apply-templates select="." mode="xml-to-string" />
            </xsl:with-param>
        </xsl:call-template>
   </xsl:template>

</xsl:stylesheet>

使用这个:http://lenzconsulting.com/xml-to-string/

【讨论】:

    猜你喜欢
    • 2019-04-11
    • 2016-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-11
    • 2014-11-15
    • 2011-12-25
    • 2019-12-15
    相关资源
    最近更新 更多