如何声明complexType只有一个子元素?

时间:2013-10-07 11:01:32

标签: xml xsd xsd-validation xml-validation

使用XML Schema声明complexType只有一个子元素时,以下三种方法都达到了目标:

<xs:complexType> <xs:sequence> <xs:element ref="somevalue"/> </xs:sequence> </xs:comlexType>
<xs:complexType> <xs:choice>   <xs:element ref="somevalue"/> </xs:choice>   </xs:comlexType>
<xs:complexType> <xs:all>      <xs:element ref="somevalue"/> </xs:all>      </xs:comlexType>

显然,sequencechoiceall对于单个元素不是必需的,因为它们应该用于指示多个元素的顺序。 是否有更简洁的方式来声明只有一个子元素的complexType(即不使用sequenceall或{{ 1}},不知何故。)

1 个答案:

答案 0 :(得分:7)

只是取消xs:sequencexs:choicexs:all,不是一种选择:

  <xs:complexType name="cType">
    <xs:element name="e"/> 
  </xs:complexType>

无效。

请参阅XML Representation of Complex Type Definitions其中complexType的内容模型定义如下:

  

(注释?,(simpleContent | complexContent |((group | all   |选择|序列)?,((attribute | attributeGroup)*,   anyAttribute?))))

element没有规定complexType是{{1}}的直接子女。