xs:所有跟随xs:sequence

时间:2017-06-25 19:22:47

标签: xml xsd

我尝试以任何顺序拥有名字和姓氏。 通过扩展,我尝试按顺序和可选的国家/地区,评论和照片。我不知道怎么做,因为氧气在我的序列区域给我一个错误。这是代码。

<xs:complexType name="_auteur">
        <xs:all>
            <xs:element name= "lastname" type= "xs:string"/>  
            <xs:element name="firstname" type="xs:string"/>  
        </xs:all>
        <xs:attribute name="ident" type="xs:string" use="required"/>
</xs:complexType>


<xs:complexType name="auteurSuite">
    <xs:complexContent>
        <xs:extension base="_auteur">
            <xs:sequence>
                <xs:element name="country" type="xs:string" minOccurs="0" maxOccurs="1"/>
                <xs:element name="comment" type="xs:string" minOccurs="0" maxOccurs="1"/>
                <xs:element name="photo" type="xs:anyURI" minOccurs="0" maxOccurs="1"/> 
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>

错误是: Cos-all-limited.1.2:'all'模型组必须出现在粒子中,'{'min occurrence'}'='{'max occurrence'}'= 1,并且此粒子必须是一对的一部分构成复杂类型定义的'{'内容类型'}'。

1 个答案:

答案 0 :(得分:0)

不幸的是,all模型组只能与自己合作,不能与sequencechoice混合使用。这是指定here,这对应于错误(cos-all-limited)。

上述扩展隐式定义了一个sequence模型组,它连接基类型(all)的粒子和派生类型(sequence)中指定的粒子。这不符合XML Schema的约束。

通常的做法是,如果某些孩子是可选的,则限制他们的顺序,并在基本类型中使用sequence模型组。

如果实例具有在每个人的名字和姓氏之间指定特定顺序的余地很重要,可以使用附加元素或属性(例如布尔值)来实现。