Python 使用XSLT 1将XML文档转换为base64

Python 使用XSLT 1将XML文档转换为base64,python,xml,xslt,xslt-1.0,lxml,Python,Xml,Xslt,Xslt 1.0,Lxml,我需要使用XSLT1转换将XML文档转换为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/xs

我需要使用XSLT1转换将XML文档转换为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没有帮助。

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

<?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>


使用此命令:

如果任务需要对XML文档进行base64编码,为什么需要XSLT?直接在XML输入文档上使用任何用于base64编码文件的库。。。它是更大转换的一部分(输出一个json对象,其中包含一组字段+一个字段
original
,其中应包括整个XML文档,以base64编码-不是我的要求,因此不确定为什么需要此字段)。我简化了xsl,只是为了在没有任何不必要的干扰的情况下提出这个问题。您需要将XML序列化为字符串,XSLT 1也只能在编写大量代码或使用另一个库(例如Evan Lenz的库)的情况下才能很好地实现这一点。谢谢Martin。使用Evan-Lenz xml-to-string.xsl实现了这一点。。。