带有Python lxml的XSLT:无法处理<xsl:for-each>元素

时间:2019-10-22 15:08:39

标签: python-3.x xml xslt xslt-1.0 lxml

我是XSLT的新手,目前我只是尝试使用lxml(Python 3.6)进行一些基本的XSLT操作。 我想将一个XML文件转换为另一个XML文件。

这是我的Python代码:

def generate_xml_source():
   xslt = ET.parse(base_dir + '/xml/LSexamples.xsl')
   global_xml = ET.parse(base_dir + '/xml/ls_ex.xml')
   transform = ET.XSLT(xslt)
   new_xml = transform(global_xml)
   new_xml.write_output("new_xml.xml")

   generate_xml_source()

这是我的初始xml文件ls_ex.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="LSexamples.xsl"?>
<TEI xmlns="http://www.tei-c.org/ns/1.0">
  <text>
    <body>
      <cit type="example" ana="#Frt" xml:id="lsex1202">
        Quote 1
      </cit>
      <cit type="example" ana="#Frt" xml:id="lsex279">
        Quote 2
      </cit>
    </body>
  </text>
</TEI>

最后,这是我的XSL文件:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="xml" encoding="UTF-8" indent="yes"/>
  <xsl:template match="/">
     <tei>
        <xsl:for-each select="/TEI/text/body/cit">
            <p>Bonjour</p>
        </xsl:for-each>
    </tei>
  </xsl:template>
</xsl:stylesheet>

我的程序运行没有任何错误,但是转换后的xml看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<tei/>

似乎在xsl:for-each标记中找不到任何元素。 那么,这是什么问题呢?我的Xpath错误吗?

我意识到这是一个非常简单的示例,但是我找不到这种解决方案,我已经搜索了一段时间。

谢谢!

0 个答案:

没有答案