Синтаксический анализ XSD с помощью lxml: почему этот 'group ref' выдает ошибку? - PullRequest
0 голосов
/ 30 октября 2019

Обратите внимание на следующий фрагмент моего XSD-файла:

    <xs:group name="SurfaceFlatProperties">
        <xs:sequence>
            <xs:element name="height" type="gml:float"/>
        </xs:sequence>
    </xs:group>
    <xs:group name="SurfaceAGLProperties">
        <xs:sequence>
                <xs:element name="Normal" type="gml:point"/>
                <xs:element name="Position" type="gml:point"/>
        </xs:sequence>
    </xs:group>

  <xs:complexType name="SurfaceType">
    <xs:choice>
        <xs:group ref="SurfaceFlatProperties"/>
        <xs:group ref="SurfaceAGLProperties"/>
    </xs:choice>
  </xs:complexType>

Строка с ref = "SurfaceFlatProperties" выдает ошибку при попытке проанализировать xsd-файл с помощью некоторого Python-скрипта, используя lxml:

xmlschema = etree.XMLSchema(xmlschema_doc)

Точнее, выдается ошибка:

lxml.etree.XMLSchemaParseError: Элемент '{http://www.w3.org/2001/XMLSchema}group', атрибут' ref ': ссылки из этой схемы на компоненты вникакие пространства имен не допускаются, поскольку они не указаны в операторе импорта.

Я почти ничего не знаю относительно XSD / XML, но у меня сложилось впечатление, что, поскольку я объявляю имя группы "SurfaceFlatProperties" втот же XSD-файл, импорт не требуется. Что мне здесь не хватает? Кажется, что все примеры, которые я вижу в Интернете, не имеют проблем с использованием такого вида 'ref = ...'

Большое спасибо, Арно.

...