Мы создаем инструмент XQuery для создания документации для схем XSD (в частности, схем UBL 2.1).Упростите схему XSD с помощью XQuery
Для этого нам необходимо упростить схемы, основанные на широком использовании ссылок на элементы и сложных типов, чтобы быть встроенными определениями.
Так элемент, как это:
<xsd:element name="Order" type="OrderType"/>
<xsd:complexType name="OrderType">
<xsd:sequence>
...
<xsd:element ref="cbc:UBLVersionID" minOccurs="0" maxOccurs="1"/>
...
</xsd:sequence>
</xsd:complexType>
...
(in another file)
<xsd:element name="UBLVersionID" type="UBLVersionIDType"/>
<xsd:complexType name="UBLVersionIDType">
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
должны быть преобразованы в:
<xsd:element name="Order">
<xsd:complexType>
<xsd:sequence>
...
<xsd:element ref="cbc:UBLVersionID" minOccurs="0" maxOccurs="1">
<xsd:complexType name="UBLVersionIDType">
<xsd:simpleContent>
<xsd:extension base="xsd:string"/>
</xsd:simpleContent>
</xsd:complexType>
...
</xsd:sequence>
</xsd:complexType> </xsd:element>
Принимая во внимание, что некоторые элементы и типы определены в импортных схемах.
Есть ли известный способ получить это с помощью XQuery?
Спасибо.
Помните что отображаемая вами целевая форма не является юридическим документом схемы XSD. Если единственным поставщиком продукции является ваше программное обеспечение для документации, это не будет проблемой. Но если вы хотите использовать встроенную («упрощенную»? Не совсем) форму для проверки (хотя бы для тестирования, чтобы убедиться, что она принимает и отклоняет те же документы, что и оригинал), эти атрибуты ref должны быть изменены на ' name ". (Хм, но учитывая присутствие импорта, вы не можете определить схему в одном документе схемы (xsd: элемент схемы) в любом случае. Поэтому, возможно, это не проблема.) –
Вы правы. Я заинтересован в преобразовании набора файлов схемы (в данном случае UBL) в один файл, полностью встроенный. –