xsd:all:元素'Child2'的值'unbounded'无效

时间:2016-02-09 04:40:36

标签: xml xsd

完整错误消息:

  

[错误] try.xsd:5:15:cos-all-restricted.2:{最大值出现}   'all'模型组中的元素必须为0或1.值'unbounded'   元素'Child2'无效。

我有以下XML文档:

<Parent>
       <Child1>value</Child1>
       <Child2>value</Child2>
       <Child3>value</Child3>
       <Child2>value</Child2>
       <Child3>value</Child3>
       <Child4>value</Child4>
       <Child5>value</Child5>
</Parent>   

两个

<Parent>
       <Child5>value</Child5>
       <Child1>value</Child1>
       <Child2>value</Child2>
       <Child3>value</Child3>
       <Child2>value</Child2>
       <Child3>value</Child3>
       <Child4>value</Child4>
</Parent>   

元素以任何顺序出现。所以我定义了这样的架构:

<xs:element name="Parent">
<xs:complexType>
    <xs:all>
      <xs:element name="Child1" type="xs:int"  minOccurs="0"/>
      <xs:element name="Child2" type="xs:string"  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Child3" type="xs:string"  minOccurs="0" maxOccurs="unbounded"/>
      <xs:element name="Child4" type="xs:string"  minOccurs="0"/>
      <xs:element name="Child5" type="xs:string"  minOccurs="0"/>
    </xs:all>
</xs:complexType>
</xs:element>

我面临两个问题:

  1. xs:all不允许无限制。
  2. 有没有办法定义Child2Child3之间的关系。

1 个答案:

答案 0 :(得分:0)

  1. 在XSD 1.0中,xsd:all的子项不能重复。如果Child2Child3只能无限次出现,请改用xs:sequence。从理论上讲,支持parent下的无序儿童可能会略微更好地符合您的实际约束,但在实践中,强制执行命令很少有用,并且通常会有所帮助,例如在这种情况下。
  2. 是的,有一些方法可以定义Child2Child3之间的关系,但更具体的是,您必须指出您想要的那种关系。