微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

xml – 了解xsd:choice和minOccurs

我无法理解以下XML模式的行为:
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  <xsd:element name="rootnode">
    <xsd:complexType>
      <xsd:sequence>
        <xsd:choice minOccurs="1" maxOccurs="2">
          <xsd:element name="e1" minOccurs="1" maxOccurs="2"/>
          <xsd:element name="e2" minOccurs="0" maxOccurs="1"/>
        </xsd:choice>
      </xsd:sequence>
    </xsd:complexType>
  </xsd:element>
</xsd:schema>

我预计至少有一个元素< e1>或< e2>必须作为< rootnode>的子节点。尽管我的期望,一个空的< rootnode>将验证此模式:

> xmllint --schema test.xsd empty.xml
 <?xml version="1.0" encoding="UTF-8"?>
 <rootnode>
 </rootnode>
 empty.xml validates

如果我将元素e2的minOccurs属性更改为“0”以外的其他属性,我得到了我原本期望的行为。

>看起来好像没有元素< e2>在我的示例中计为xsd:选项的出现。
>如果是这种情况,那么这个无限数量的事件怎么会违反我的xsd:choice中的maxOccurs限制?

我告诉你,你至少可以去商店一次,最多两次,每次你可以选择购买什么:你可以买苹果(一个苹果或两个苹果),或者你可以买桔子橙子或橙子)。

完全有可能选择去商店两次,每次都不买橘子。所以你没有回来。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。