我无法让 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/