我有一个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))
问题是我得到作为回报 无
因为我是初学者,所以我减轻了我的文件,因为我认为这是问题的原因,但事实证明问题仍然存在:
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 文件中,
verification
元素的statut
属性的值未括在单引号或双引号中- 对于
f_tst
元素的value
属性的值,没有开始引号
在 XSLT 样式表中,
- 您的模板与"验证"匹配,而输入元素的名称是"验证"
-
<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"
。