我有一些具有 xmlns 声明的 XML,如下所示:
<dc:record xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:dcterms="http://purl.org/dc/terms/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:mods="http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-0.xsd">
这条线似乎在 Python 中触发了 eTree XML 解析器:
lxml.etree.XMLSyntaxError: xmlns:mods: 'http://www.loc.gov/mods/v3 http://www.loc.gov/standards/mods/v3/mods-3-0.xsd' is not a valid URI, line 6, column 63
如果我删除在 xmlns:mods 声明中找到的两个 URI 之一,它解析得很好。
因此,知道 xmlns 元素是用来帮助人类解析的,并且并不意味着要特别尊重,这是对 XML 的真正约束(在 xmlns 命名空间声明中具有单个 URI),还是过度热心的强制执行lxml etree 解析器?