python - 如何在 python 中将 XML 转换为 HTML?

标签 python xml xhtml elementtree

我无法让 xml.etree.ElementTree 打印或确认正确的 XHTML header 。它坚持提供通用的 XML header 、为所有标记添加“html:”前缀、抛出异常或这些的组合。

首先如何创建有效的 XHTML 文档?

我有大约 4 MB 的 xml 文件,我正在尝试从它们创建一个有效的 epub。有各种需要完成的修改,<chapter>例如,标签在 xhtml 中没有位置。

以下代码:

    import xml.etree.ElementTree as ET
    xhtml = ET.fromstring(                                                                          
    "<?xml version=\"1.0\" xmlns=\"http://www.w3.org/1999/xhtml\" ?>\n<head><title></title></head>\n<body>\n</body>")

抛出:

xml.etree.ElementTree.ParseError: XML declaration not well-formed: line 1, column 31

如果我提供“正确的”xhtml header ,它会坚持认为它是 html,提供它自己的 xml header ,并在所有标记前加上“html:”前缀

如果我给出“正确”的 xml header ,则 epubcheck 会提示“”不是有效的命名空间(我认为它不是)。

理论是,如果我可以创建(并随后写出)一个有效的 xhtml 文档,我就可以解析我的 xml 来获取 <body><title>这是需要的,适本地修改它们(例如,href 和 src 都需要更改),将它们放在那里,然后就变成了金色。

根据我的发现,有效的 xhtml 文档必须以 <xhtml xmlns="http://www.w3.org/1999/xhtml> 开头并包含一个头部(带有必需的标题元素)和一个主体。我不确定我可以省略哪些(如果有的话)并仍然通过 epubcheck 的要求。

肯定有办法强制 ET 使用正确的 header 吗?或者我需要使用不同的库,还是什么?

最佳答案

实现此目的的一种方法是使用 XSLT 转换。大多数编程语言(包括 Python)在提供 XSL 时都支持将 XML 文档转换为另一个文档(例如 HTML)。

关于 XSLT 转换的好教程可以在 here 找到。

描述了使用 Python 实现转换(一旦准备好 XSL)here

关于python - 如何在 python 中将 XML 转换为 HTML?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57245432/

相关文章:

xml - 使用 Saxon 9.6HE 自动执行多个文件的 xquery

html - 什么是文档模式下的怪癖模式以及如何更改它?

jsf - 我们可以直接在 JSF xhtml 文件中访问 session 范围变量吗

jquery - 查找和替换问题

python - Django/South "python manage.py migrate CaseReport"引发异常

python - 可能的 math.ceil() 错误

python - Sphinx 没有正确更新文档

xml - 如何使用 TXMLDocument 手动构造 Soap Envelope (Delphi 2006)

c# - 对象 xml 反序列化问题?

python - 删除文件名前面的四个字符和末尾的十三个字符的字符串