为什么使用 <xsd:sequence> 作为单个 <xsd:element>?

Why use <xsd:sequence> for a single <xsd:element>?

<xsd:complexType>
<xsd:sequence>
<xsd:element name="allowFieldTruncation" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>

在上面的例子中,我在复杂类型下只定义了一个元素(称为allowFieldTruncation),我对minOccursmaxOccurs[=19没有要求=].现在我的问题是为什么我应该包含一个序列标签——定义不能像下面这样吗?

<xsd:complexType>
<xsd:element name="allowFieldTruncation" type="xsd:boolean"/>
</xsd:complexType>

因为 XSD 规范 says so:

<complexType
  abstract = boolean : false
  block = (#all | List of (extension | restriction))
  final = (#all | List of (extension | restriction))
  id = ID
  mixed = boolean : false
  name = NCName
  {any attributes with non-schema namespace . . .}>
  Content: (annotation?, 
            (simpleContent | complexContent 
            | ((group | all | choice | sequence)?, 
               ((attribute | attributeGroup)*, anyAttribute?))))
</complexType>

如果您希望在内容模型中指定 xsd:element,请将 xsd:sequence 视为所需的几个模型组之一。 (除了 xsd:sequence 之外,您还可以使用另一个。)设计可能不允许为一个元素的 "groups" 指定任何模型组,但是就例外和不规则而言,XSD必须在某处绘制模糊的波浪线。