LXML and XSL document() Function

前端 未结 2 640
爱一瞬间的悲伤
爱一瞬间的悲伤 2021-01-18 11:34

Hi i got the following files :

merge.py:

from lxml import etree

xml_input = etree.XML(open(\'a.xml\', \'r\').read())
xslt_root = etree.XML(open(\'me         


        
相关标签:
2条回答
  • 2021-01-18 12:01

    You need to register a URI resolver. See the documentation.

    Probably something like this (untested):

    class FileResolver(etree.Resolver):
        def resolve(self, url, pubid, context):
            return self.resolve_filename(url, context)
    
    parser = etree.XMLParser()
    parser.resolvers.add(FileResolver())
    xml_input = etree.parse(open('a.xml','r'), parser)
    xslt_root = etree.parse(open('merge.xsl','r'), parser)
    transform = etree.XSLT(xslt_root)
    print str(transform(xml_input))
    
    0 讨论(0)
  • 2021-01-18 12:13

    Why not simply do this?

    from lxml import etree
    
    xml_input = etree.parse("a.xml")
    xslt_root = etree.parse("merge.xsl")
    transform = etree.XSLT(xslt_root)
    print str(transform(xml_input))
    

    More straightforward, no need for a resolver.

    0 讨论(0)
提交回复
热议问题