gpt4 book ai didi

python - 如何从 XML 和 XSLT 获取 HTML 文件

转载 作者:行者123 更新时间:2023-12-01 05:23:19 25 4
gpt4 key购买 nike

我有一个 XML 文件和相应的 XSLT。我想要一个可以通过Python在浏览器上运行的HTML文件。

这是我的Python代码:

from lxml import etree
dom = etree.parse(path_xml)
xslt =etree.parse(path_xslt)
transform = etree.XSLT(xslt)
newdom = transform(dom)
print(etree.tostring(newdom, pretty_print=True))

问题是我得到的返回为 None

因为我是初学者,所以我减轻了文件的负担,因为我认为这是问题的原因,但事实证明问题仍然存在:

XML 文件:

<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet "comparexsl.xsl"?>
<!DOCTYPE verification SYSTEM "verif.dtd">
<verification statut=false>
<nberror>2537</nberror>
<f_ref type="t1" value="val"/>
<f_tst type="t2" value=val2"/>
<f_ref type="x" value="20"/>
<f_tst type="x" value="201"/>
<cnxn log="l" mdp="mdp1" />
<option name="MAJ" title="" result="False">
<time time1="116" time2="-31.25" time3="11">
<time_a time1="0" time2=""/>
<time_o time1="15" time2="-40"/></time>
</option>
</verification>

这是我的 XSLT 表的内容:

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8"
indent="yes" />
<xsl:template match="verfication">
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<p><img src="image.jpg" alt="Binevenue"/></p>
<h1 align="center" > Comparaison Status= FALSE </h1>
<p>Nombre d'erreurs = <xsl:value-of select="verification/nberror"/></p>
<p><a href="">See more Details ...</a></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

最佳答案

您的代码中有多个错误源。您需要修改 XML 文件和 XSLT 样式表。

在您的 XML 文件中,

  • statut 的值verification 的属性元素未用单引号或双引号括起来
  • 对于 value 的值f_tst 的属性元素,没有开头引号

在您的 XSLT 样式表中,

  • 您的模板与“verfication”匹配,而您的输入元素的名称是“verification”
  • <xsl:value-of select="verification/nberror"/>应该读 <xsl:value-of select="nberror"/>由于上下文(模板匹配 verification )

此外,名为“verif.dtd”的 DTD 可能不适用于您的 XSLT 处理器或浏览器。

输入(已修改)

<?xml version="1.0" encoding="UTF-8" ?>
<verification statut="false">
<nberror>2537</nberror>
<f_ref type="t1" value="val"/>
<f_tst type="t2" value="val2"/>
<f_ref type="x" value="20"/>
<f_tst type="x" value="201"/>
<cnxn log="l" mdp="mdp1" />
<option name="MAJ" title="" result="False">
<time time1="116" time2="-31.25" time3="11">
<time_a time1="0" time2=""/>
<time_o time1="15" time2="-40"/></time>
</option>
</verification>

样式表

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" doctype-system="about:legacy-compat" encoding="UTF-8"
indent="yes" />
<xsl:template match="verification">
<html>
<head>
<meta charset="utf-8"/>
</head>
<body>
<p><img src="image.jpg" alt="Binevenue"/></p>
<h1 align="center" > Comparaison Status= FALSE </h1>
<p>Nombre d'erreurs = <xsl:value-of select="nberror"/>
</p>
<p><a href="">See more Details ...</a></p>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

吹毛求疵,但是alt="Binevenue"实际上应该是alt="Bienvenue"法语。

关于python - 如何从 XML 和 XSLT 获取 HTML 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21885404/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com