【发布时间】:2019-12-06 07:08:31
【问题描述】:
我无法让 xml.etree.ElementTree 打印或确认正确的 XHTML 标头。它坚持提供一个通用的 XML 标头,为所有标签添加前缀“html:”,抛出异常,或这些的组合。
我如何首先创建一个有效的 XHTML 文档?
我有大约 4 兆字节的 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 声明格式不正确:第 1 行,第 31 列
如果我改为给出“正确”的 xhtml 标头,它会坚持它是 html,给出它自己的 xml 标头,并在所有标签前加上“html:”
如果我给出“正确”的 xml 标头,则 epubcheck 会抱怨“”不是有效的命名空间(我想它不是)。
理论是,如果我可以创建(并随后写出)有效的 xhtml 文档,我可以解析我的 xml 以获得所需的 <body> 和 <title>,并适当地修改它们(href 和 src 都需要更改,例如),把它们粘在那里,然后变成金色。
根据我的发现,一个有效的 xhtml 文档必须以 <xhtml xmlns="http://www.w3.org/1999/xhtml> 开头,并包含一个标题(带有必需的标题元素)和一个正文。我不确定我可以省略哪些(如果有的话)并仍然通过 epubcheck 的要求。
肯定有办法强制 ET 使用正确的标题吗?还是我需要使用不同的库,还是什么?
【问题讨论】:
标签: python xml xhtml elementtree