使用自定义元素扩展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>