最新的Web开发教程
 

XML架构complexType元素


<XML Schema参考手册

定义和用法

该complexType元素定义复杂类型。 复杂类型元素是包含其它元素和/或属性的XML元素。

元素信息

  • Parent elements:元素,重新定义,模式

句法

<complexType
id=ID
name=NCName
abstract=true|false
mixed=true|false
block=(#all|list of (extension|restriction))
final=(#all|list of (extension|restriction))
any attributes
>

(annotation?,(simpleContent|complexContent|((group|all|
choice|sequence)?,((attribute|attributeGroup)*,anyAttribute?))))

</complexType>

(?符号声明元素可出现零次或一次,*符号声明元素可出现复杂类型元素中零次或多次)

属性 描述
id 可选的。 指定一个唯一的ID为元素
name 可选的。 指定名称为元素
abstract 可选的。 指定是否复杂类型可以在实例文档中使用。 True表示一个元素不能直接使用这个复杂的类型,但必须使用从该复杂类型派生的复杂类型。 默认为false
mixed 可选的。 指定字符数据是否允许此complexType元素的子元素之间出现。 默认为false。 如果simpleContent的元素是子元素,在mixed属性是不允许的!
block 可选的。 防止复杂类型具有替代该复杂类型被用来指定类型派生的。 这个值可以包含#all或者是扩展或限制的一个子集的列表:
  • extension - 防止通过扩展派生的复杂类型
  • restriction - 防止通过限制派生的复杂类型
  • #ALL - 防止所有派生的复杂类型
final 可选的。 防止特定类型的这种复杂类型元素的派生。 可以包含#all或者是延长或限制的一个子集的列表。
  • extension - 防止派生通过扩展
  • 限制 - 防止派生通过限制
  • #ALL - 防止所有派生
any attributes 可选的。 规定带有non-schema命名空间的任何其他属性。

例1

下面的例子有命名的元素"note"这是一个复杂类型:

<xs:element name="note">
  <xs:complexType>
    <xs:sequence>
  <xs:element name="to" type="xs:string"/>
  <xs:element name="from" type="xs:string"/>
  <xs:element name="heading" type="xs:string"/>
  <xs:element name="body" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

例2

下面的例子有一个复杂类型, "fullpersoninfo"从另一个复杂类型,导出"personinfo"通过扩展继承的类型与另外三个要素(address, city and country)

<xs:element name="employee" type="fullpersoninfo"/>

<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullpersoninfo">
  <xs:complexContent>
    <xs:extension base="personinfo">
      <xs:sequence>
        <xs:element name="address" type="xs:string"/>
        <xs:element name="city" type="xs:string"/>
        <xs:element name="country" type="xs:string"/>
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

在上面的例子中"employee"元素必须包含在顺序下列元素: "firstname""lastname""address""city""country"


<XML Schema参考手册