Вы используете MyType в «другой» схеме правильно: объявите пространство имен, используйте import
и используйте объявленный префикс (general
).
<xsd:schema targetNamespace="http://www.example.com/otherschema"
xmlns:general="http://www.example.com/genschema">
<xsd:import namespace="http://www.example.com/genschema" schemaLocation="general.xsd" />
<xsd:element name="myName" type="general:MyType" />
</xsd>
Обратите внимание, что я сделал ваш http://...
пунктов ясно, чтобы понять, какие из них обычно отличаются в ситуации, которую вы описываете.
Если вы спрашиваете о схеме, где определено MyType
, используйте без префикса имя для определения в этой схеме:
<xsd:schema targetNamespace="http://www.example.com/genschema"
<xsd:complexType name="MyType"> ... </xsd:complexType>
</xsd:schema>
Обновление на основе ваших изменений:
В экземпляре XML-документа использование myName
будет иметь пространство имен "otherschema", которое является targetNamespace выше.Использование MyType
будет использовать пространство имен "genschema".
Я удалил <xsd:element ref="general:MyType"/>
, который имеет смысл, только если MyType
является элементом (не типом) и если он находится внутри определения типа.Предположим, что «otherschema» содержит:
<xsd:complexType name="otherType>
...
<xsd:element ref="general:MyElement"/>
</xsd:complexType>
В этом случае MyElement
будет по-прежнему использовать пространство имен «genschema» в экземпляре документа XML.
Нижняя строка: импорт элементов не изменяетсяих пространство имен.Включение их, однако, меняет пространство имен (то есть, используя <xsd:include>
.