如何从 XML 和 XSLT 获取 HTML 文件



我有一个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"

相关内容

  • 没有找到相关文章

最新更新