2010-07-29 2 views
5

Я хочу, чтобы определить сложный тип, который содержит элементы, которые могут или не могут существовать, а также позволяет дополнительные неопределенные элементы, так что я получил что-то вроде этого:XML-схема с полным типом, содержащим <xs:all> и <xs:any>?

<xs:complexType name="MyType"> 
<xs:sequence> 
    <xs:element name="A" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="B" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="C" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:any minOccurs="0" processContents="skip"/> 
</xs:sequence> 
</xs:complexType> 

Я не хочу, чтобы заставить используя <xs:sequence>, поэтому я хочу изменить <xs:sequence> на <xs:all>, но тогда <xs:any> не допускается. Есть ли способ сделать это?

+0

Я не отмечал код в своем описании, чтобы он не был виден. Я знаю о , но я хочу использовать и Ken

+0

Возможный дубликат [Проверка XML с XSD ... но по-прежнему разрешающая расширяемость] (http://stackoverflow.com/questions/3347822/validating-xml-with- xsds-но все еще позволяют-расширяемость) – Wrikken

ответ

0

Чтобы разрешить любой заказ, используйте:

<xs:complexType name="MyType"> 
<xs:all minOccurs="1" maxOccurs="1"> 
    <xs:element name="A" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="B" type="xs:float" minOccurs="0" maxOccurs="1" /> 
    <xs:element name="C" type="xs:float" minOccurs="0" maxOccurs="1" /> 
</xs:all> 
</xs:complexType> 

Но тогда, вы не можете иметь <any> внутри <all>.
Вы также можете иметь их как внутри одного типа, так и непосредственно в качестве расширения.