2

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

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>

模式验证在第 011 行失败,并出现以下错误:“ cos-all-limited.1.2:所有模型组必须出现在一个粒子中,{min 发生} = {max 出现} = 1,并且该粒子必须是构成复杂类型定义的 {content type} 的一对。 " 如果可以使用 all 指示符 "<all>" 继续为未定义的元素顺序使用模式扩展,任何人都可以帮助我,因为我不需要指定确切的元素顺序?

先感谢您。马西莫

4

1 回答 1

2

您需要 XML Schema 1.1 通过扩展向xsd:all内容模型添加元素。如果您可以接受强加的元素排序,则可以使用xsd:sequenceXSD 1.0 或 1.1。

XML 模式 1.0

请参阅XML Schema Part 1: Structures Second Edition,第2.2.1.3 节复杂类型定义

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

XML 模式 1.1

请参阅W3C XML 模式定义语言 (XSD) 1.1 第 1 部分:结构,第2.2.1.3 节复杂类型定义

注意:在大多数情况下,本规范只允许附加,而不允许其他类型的扩展。此决定简化了将实例从派生类型转换为基类型所需的应用程序处理。一种特殊情况允许以不保证新材料仅出现在内容末尾的方式扩展所有组。另一个特殊情况是在交错模式下通过 Open Contents 进行扩展。

也可以看看

根据@helderdarocha的评论,请务必还看到:

于 2014-04-03T21:51:58.150 回答