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。非常惊讶的是,这次投票还没有获得通过。