使用自定义元素扩展XML模式

使用自定义元素扩展XML模式,xml,xsd,Xml,Xsd,我正在努力做到以下几点: <myNamespace:foo> <myNamespace:bar>hello</myNamespace:bar> <myNamespace:extended> <yourNamespace:anything> .... </yourNamespace:anything> </myNamespace:extended&g

我正在努力做到以下几点:

<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创建一个新文档时,我在eclipse中得到了以下信息:“没有根元素存在,因为提供的模式没有全局元素”。yourSchema.xsd不应该从mySchema.xsd继承根元素吗

我认为您需要的是使用类型
anyType
定义
元素。请尝试此架构:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"     attributeFormDefault="unqualified">
    <xs:element name="foo">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="bar" type="xs:string"/>
                <xs:element name="extended" type="xs:anyType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"     attributeFormDefault="unqualified">
    <xs:element name="foo">
        <xs:complexType>
            <xs:sequence>
                <xs:element name="bar" type="xs:string"/>
                <xs:element name="extended" type="xs:anyType"/>
            </xs:sequence>
        </xs:complexType>
    </xs:element>
</xs:schema>