我有xml文件:
<Parent>
  <Child1 ... />
  <Child2 ... />
  ...
  <Child1 ... />
  <Child1 ... />
<Parent>其中Clild1和Child2 -父抽象类的子类。
也就是说,问题是:如何为可以具有任意数量不同类型的元素的集合设置验证方案?
诚挚的问候!
发布于 2012-02-16 15:00:33
<xs:element name="Parent">
  <xsl:complexType>
    <xs:choice minOccurs="0" maxOccurs="unbounded">
      <xs:element name="Child1"/>
      <xs:element name="Child2"/>
    </xs:choice>
  </xs:complexType>
</xs:element>为了说明这是如何工作的,让我们使用示例输入的简化版本。
<Parent>
  <Child1 ... />
  <Child2 ... />
  <Child1 ... />
  <Child1 ... />
</Parent><Parent>是第一个验证的元素。<Child1>。由于<Child1>是choice块中的第一个元素,因此它的validates.<Child2>元素。因为<Child2>是下一个元素,所以它也是validates.</Parent>,所以验证器会根据choice块检查它,因为当validates.<Child2>元素时,它会无限次地出现,而choice验证器会查找一个不存在的<Child1>元素,所以它会结束choice块。</Parent>,所以验证器根据choice块检查它,因为当validates.</Parent>元素时,它可以无限次地出现,然后再由choice验证器查看下一个元素。它是validates.</Parent>。该文档验证successfully.由于minOccurs=0,这也允许存在<Child1>或<Child2>元素的0出现的情况。XML架构元素继承其父元素的属性,除非显式声明。在本例中,由于我们没有为<Child1>或<Child2>声明minOccurs属性,因此这相当于<xs:element minOccurs="0" name="Child1"/>和<xs:element minOccurs="0" name="Child2"/>。
https://stackoverflow.com/questions/9306095
复制相似问题