我有一个XML和XSLT。来自法国的天气数据
XML:https://donneespubliques.meteofrance.fr/donnees_libres/Pdf/BRA/BRA.CHABLAIS.20190514130953.xml XSLT:http://donneespubliques.meteofrance.fr/donnees_libres/Pdf/BRA/bra.xslt
我测试了网站https://xslttest.appspot.com/,它似乎使用了http://saxon.sourceforge.net/,它给了我两个html元素link
和div
。你知道吗
对于lxml,它只提供link
元素:
import requests
import lxml.etree as ET
xml = ET.fromstring(requests.get('https://donneespubliques.meteofrance.fr/donnees_libres/Pdf/BRA/BRA.CHABLAIS.20190514130953.xml').content)
xslt = ET.fromstring(requests.get('http://donneespubliques.meteofrance.fr/donnees_libres/Pdf/BRA/bra.xslt').content)
transform = ET.XSLT(xslt)
generated_html = transform(xml)
print(ET.tostring(generated_html, pretty_print=True))
输出:
b'<link rel="stylesheet" type="text/css" href="BRA.css"/>\n'
我觉得XSLT可能会生成两个XML元素,没有根,这可能就是lxml只给我一个link
元素的原因。你知道吗
使用lxml 4.3.3
如果我在Python中使用
str(generated_html)
或generated_html.write_output(sys.stdout)
(尽管后者要工作,似乎xsl:output
中声明的编码需要与stdout的编码匹配,在Windows上似乎是UTF-8,不确定其他平台)。你知道吗另请参见https://lxml.de/xpathxslt.html#xslt-result-objects警告
因此,我认为您的假设是,生成的包含多个顶级元素的片段不能很好地与所使用的
tostring
方法配合使用。你知道吗相关问题 更多 >
编程相关推荐