Ответ на самом деле зависит от того, какие ограничения вы накладываете на файлы XSD, их использование и инструменты, которые вы будете использовать для использования файлов схемы XML.На этой диаграмме показано расположение файлов, описанное в вопросе.
Поскольку вы переопределяете use1.xsd и use2.xsd, я бы предположил, что эти два нередактируемый (обычно выпускается / поддерживается кем-то еще).
Опция 1
Один из способов - удалить переопределения из частности, использовать # .xsd, поместить переопределение в reused.xsd и убедиться, что все файлы используются.вместе (например, в .NET у вас есть объект XmlSchemaSet, вам нужно иметь reused.xsd и один или оба из частностиUse # .xsd, добавленных в набор).Имея файлы в области видимости, модель PSVI будет фактически использовать переопределенный myType, даже если на файл reused.xsd явно не ссылается какой-либо файл specialUse # .xsd.
reused.xsd
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XSR Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:redefine schemaLocation="definition.xsd">
<xsd:simpleType name="myType">
<xsd:restriction base="myType">
<xsd:enumeration value="value1"/>
<xsd:enumeration value="value2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:redefine>
</xsd:schema>
specificUse1.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="use1.xsd"/>
</xs:schema>
specificUse2.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="use2.xsd"/>
</xs:schema>
Опция 2
Эта другая опция должна работать с большинством основных редакторов XML-схем, и она даст вам переопределенный myType при открытии только файла specialUse # .xsd;это при условии, что вы не возражаете потянуть область действия для specificUse2.xsd содержимого из use1.xsd (на основе иллюстрации).
reused.xsd
<?xml version="1.0" encoding="utf-8"?>
<!--XML Schema generated by QTAssistant/XSR Module (http://www.paschidev.com)-->
<xsd:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:redefine schemaLocation="use1.xsd">
<xsd:simpleType name="myType">
<xsd:restriction base="myType">
<xsd:enumeration value="value1"/>
<xsd:enumeration value="value2"/>
</xsd:restriction>
</xsd:simpleType>
</xsd:redefine>
</xsd:schema>
specificUse2.xsd
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="reused.xsd"/>
<xs:include schemaLocation="use2.xsd"/>
</xs:schema>
Независимо от параметра PSVI показывает именно то, что вы хотите.