为什么使用 <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
),我对minOccurs
或maxOccurs[=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必须在某处绘制模糊的波浪线。
<xsd:complexType>
<xsd:sequence>
<xsd:element name="allowFieldTruncation" type="xsd:boolean"/>
</xsd:sequence>
</xsd:complexType>
在上面的例子中,我在复杂类型下只定义了一个元素(称为allowFieldTruncation
),我对minOccurs
或maxOccurs[=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必须在某处绘制模糊的波浪线。