Из документации lxml я понимаю, что пользовательские элементы XML должны наследоваться от ElementBase
.
Например, я могу создать
class FactVariable(etree.ElementBase):
''' Class that represents a XBRL fact variable.'''
TAG = '{http://xbrl.org/2008/variable}factVariable'
@property
def label(self):
return self.attrib['{http://www.w3.org/1999/xlink}label']
@label.setter
def label(self, value):
self.attrib['{http://www.w3.org/1999/xlink}label'] = value
Моя проблема заключается в том, что при созданииВ дереве XML и размещении таких узлов я получаю
<ns0:factVariable xmlns:ns0="http://xbrl.org/2008/variable" label="azerty"/>
Вопрос : я хочу, чтобы к пространству имен был добавлен префикс va
, а не ns0
Как я могу это изменить?
Я попытался установить свойство self.nsmap
, но у меня есть исключение «только для чтения».Добавление ключа / значения не имеет никакого эффекта (как сказано в документации).
Я тоже пытался, но безуспешно
etree.register_namespace('va', 'http://xbrl.org/2008/variable')