Обратите внимание на следующий фрагмент моего 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 = ...'
Большое спасибо, Арно.