Я пытаюсь сделать следующее:
<myNamespace:foo>
<myNamespace:bar>hello</myNamespace:bar>
<myNamespace:extended>
<yourNamespace:anything>
....
</yourNamespace:anything>
</myNamespace:extended>
</myNamespace:foo>
По сути, я хочу разработать схему, которая позволит отдельному элементу переопределяться элементами из другого пространства имен.
Я пробовал это:
<!-- mySchema.xsd -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/mySchema"
xmlns:myNamespace="http://www.example.org/mySchema"
elementFormDefault="qualified">
<complexType name="extendedType">
<sequence>
<any/>
</sequence>
</complexType>
<element name="foo">
<complexType>
<sequence>
<element name="bar" type="string"/>
<element name="extended" type="myNamespace:extendedType"/>
</sequence>
</complexType>
</element>
.
<!-- yourSchema.xsd -->
<schema xmlns="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/yourSchema"
xmlns:yourNamespace="http://www.example.org/yourSchema"
xmlns:myNamespace="http://www.example.org/mySchema"
elementFormDefault="qualified">
<import namespace="http://www.example.org/mySchema" schemaLocation="mySchema.xsd"/>
<redefine schemaLocation="mySchema.xsd">
<complexType name="extendedType">
<complexContent>
<extension base="myNamespace:extendedType">
<sequence>
<element name="anything"></element>
</sequence>
</extension>
</complexContent>
</complexType>
</redefine>
</schema>
но когда я пытаюсь создать новый документ из yourSchema.xsd, в eclipse я получаю следующее: «Корневой элемент не существует, так как предоставленная схема не имеет глобальных элементов». Разве yourSchema.xsd не должен наследовать корневой элемент от mySchema.xsd?