У меня есть некоторый XML с объявлением xmlns следующим образом:
<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">
Эта строка, кажется, отключает синтаксический анализатор eTree XML в Python:
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
Если я удалю один из двух URI, найденных в объявлении xmlns:mods, он будет нормально проанализирован.
Итак, зная, что элемент xmlns предназначен для облегчения синтаксического анализа человеком и не предназначен для особого уважения, является ли это подлинным ограничением на XML (иметь один URI в объявлении пространства имен xmlns) или это чрезмерно усердное соблюдение со стороны парсер lxml etree?
xmlns
не предназначено для людей — это фактическое пространство имен, а пространство имен должно быть URI (уважительным или нет). Это префикс для людей. - person Francis Avila   schedule 08.04.2013