我无法理解以下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>
Run Code Online (Sandbox Code Playgroud)
我期望任何一个元素的至少一个实例<e1>或<e2>作为孩子的必需品<rootnode>.尽管我的期望,空的<rootnode>将验证这个架构:
> xmllint --schema test.xsd empty.xml
<?xml version="1.0" encoding="UTF-8"?>
<rootnode>
</rootnode>
empty.xml validates
Run Code Online (Sandbox Code Playgroud)
如果我将minOccurs元素的属性更改为e2其他内容"0",我会得到我最初预期的行为.
似乎仅仅缺少元素<e2>就像xsd:choice我的例子中出现的一样.
如果是这种情况,那么为什么这无限次的出现不会违反maxOccurs我的限制xsd:choice呢?
Mic*_*Kay 95
我告诉你,你可以去商店至少一次,最多两次,每次你可以选择买什么:你可以买苹果(一个苹果或两个苹果),或者你可以买橙子(要么没有橙子或橙子).
完全有可能你会选择去商店两次,每次都不买橙子.所以你什么也没回来.