Validation 使用扩展名和所有指示符的XSD验证错误

Validation 使用扩展名和所有指示符的XSD验证错误,validation,xsd,unordered,Validation,Xsd,Unordered,我正在尝试验证以下使用架构扩展和所有指示符的架构: 001 <?xml version='1.0' encoding='UTF-8'?> 002 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://myschemas.com/test" elementFormDefault="qualified" attributeFormDefault="unqualified" tar

我正在尝试验证以下使用架构扩展和所有指示符的架构:

001 <?xml version='1.0' encoding='UTF-8'?>
002 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:tns="http://myschemas.com/test" elementFormDefault="qualified" attributeFormDefault="unqualified"
    targetNamespace="http://myschemas.com/test">
003 <xsd:complexType name="baseClass">
004  <xsd:all>
005   <xsd:element name="field1" type="xsd:string"/>
006  </xsd:all>
007 </xsd:complexType>
008 <xsd:complexType name="derivedClass">
009  <xsd:complexContent>
010   <xsd:extension base="tns:baseClass">
011     <xsd:all>      <!-- Fails with error: cos-all-limited.1.2 -->
012     <xsd:element name="extField2" type="xsd:string"/>
013    </xsd:all>
014   </xsd:extension>
015  </xsd:complexContent>
016 </xsd:complexType>
017 </xsd:schema>
001
002
003
004
005
006
007
008
009
010
011
012
013
014
015
016
017
架构验证在第011行失败,错误如下: cos all limited.1.2:所有模型组必须出现在{min ocurses}={max ocurses}=1的粒子中,并且该粒子必须是构成复杂类型定义的{content type}对的一部分 如果可以继续使用all指示符“”为未定义的元素顺序使用架构扩展,任何人都可以帮助我,因为我不需要指定确切的元素顺序


先谢谢你。Massimo

您需要XMLSchema 1.1通过扩展向
xsd:all
内容模型添加元素。如果您可以接受强加的元素顺序,那么您可以使用
xsd:sequence
来代替xsd1.0或1.1

XML模式1.0 见,第节:

注:本规范仅允许附加,不允许其他类型的 扩展。此决定简化了所需的应用程序处理 将实例从派生类型强制转换为基类型。未来版本可能允许 更多种类的扩展,需要更复杂的转换 效果铸造

XML模式1.1 见,第节:

注:在大多数情况下,本规范仅允许附加和 而不是其他类型的扩展。这个决定简化了应用程序 将实例从派生类型强制转换为 基本类型。一种特殊情况允许以多种方式扩展所有组 这并不能保证新材料只在生产结束时出现 内容。另一种特殊情况是通过中的开放内容进行扩展 交织模式

另见 根据@的评论,请务必查看:


不能使用新元素扩展
所有
。在这里看到一些备选方案:在这里:看到下面更好的答案。。。模式1.0和1.1之间的差异围绕Stackoverflow还有其他问题,没有考虑1.1。非常惊讶的是,这次投票还没有获得通过。