Вы можете зарегистрировать более одного пространства имен, только не в одном вызове register_namespace ().
Вы должны будете сделать отдельные вызовы для register_namespace () для каждого пространства имен.
Пример ...
import xml.etree.ElementTree as ET
ns_map = {"foo": "urn::foo",
"bar": "urn::bar"}
for prefix, uri in ns_map.items():
ET.register_namespace(prefix, uri)
root = ET.Element(ET.QName(ns_map["foo"], "root"))
ET.SubElement(root, ET.QName(ns_map["bar"], "child"))
print(ET.tostring(root).decode())
Печать ...
<foo:root xmlns:bar="urn::bar" xmlns:foo="urn::foo"><bar:child /></foo:root>
Также ...
Если в этом нет ничего разумного, я переключусь на l xml.
Я бы все равно переключился на l xml , : -)