首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >xsd:抽象类集合

xsd:抽象类集合
EN

Stack Overflow用户
提问于 2012-02-16 13:35:01
回答 1查看 319关注 0票数 0

我有xml文件:

代码语言:javascript
运行
复制
<Parent>
  <Child1 ... />
  <Child2 ... />
  ...
  <Child1 ... />
  <Child1 ... />
<Parent>

其中Clild1和Child2 -父抽象类的子类。

也就是说,问题是:如何为可以具有任意数量不同类型的元素的集合设置验证方案?

诚挚的问候!

EN

Stack Overflow用户

回答已采纳

发布于 2012-02-16 15:00:33

代码语言:javascript
运行
复制
<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>

为了说明这是如何工作的,让我们使用示例输入的简化版本。

代码语言:javascript
运行
复制
<Parent>
  <Child1 ... />
  <Child2 ... />
  <Child1 ... />
  <Child1 ... />
</Parent>

  1. 验证器查看第一个元素。<Parent>是第一个验证的元素。
  2. 验证器然后在父元素中查找复杂类型。它会找到<Child1>。由于<Child1>choice块中的第一个元素,因此它的validates.
  3. The验证器随后会查找<Child2>元素。因为<Child2>是下一个元素,所以它也是validates.
  4. The验证器,然后查看下一个元素。它不是</Parent>,所以验证器会根据choice块检查它,因为当validates.
  5. The验证器找到一个<Child2>元素时,它会无限次地出现,而choice验证器会查找一个不存在的<Child1>元素,所以它会结束choice块。
  6. 验证器会查看下一个元素。它不是</Parent>,所以验证器根据choice块检查它,因为当validates.
  7. The验证器找到一个</Parent>元素时,它可以无限次地出现,然后再由choice验证器查看下一个元素。它是validates.
  8. The验证器完成的</Parent>。该文档验证successfully.

由于minOccurs=0,这也允许存在<Child1><Child2>元素的0出现的情况。XML架构元素继承其父元素的属性,除非显式声明。在本例中,由于我们没有为<Child1><Child2>声明minOccurs属性,因此这相当于<xs:element minOccurs="0" name="Child1"/><xs:element minOccurs="0" name="Child2"/>

票数 1
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9306095

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档