complexContent(复杂内容)元素:
除simpleContent外的所有复杂元素,都是complexContent(复杂内容)元素。
内容中仅含有子元素的复杂元素:
语法:
<xs:complexType>
<xs:complexContent>
<xs:restriction base="xs:anyType">
<!--定义元素组-->
</xs:restriction>
</xs:complexContent>
</xs:complexType>
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType> /表示该元素为一个复杂元素
<xs:complexContent> /表示该元素属于复杂元素中的复杂内容
<xs:restriction base="xs:anyType"> /约束该元素为anyType类型
<xs:sequence> /表部定义的元素只能以固定顺序出现
<xs:element name="id" type="xs:integer"/> /先出现元素"id"唯一编号
<xs:element name="name" type="xs:string"/> /再出现元素"name"书名
<xs:element name="author" type="xs:string"/> /再出现元素"author"作者
<xs:element name="price" type="xs:decimal"/> /最后出现元素"price"价格
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>
XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="009.xsd">
<id>001</id>
<name>XML学习天下</name>
<author>李四</author>
<price>88.50</price>
</book>
注:Schema规定,如果一个复杂内容定义是使用anyType约束派生而来的,
则<xs:complexContent>和<xs:restriction base="xs:anyType">可以省略不写,这就是所谓的默认速记规则。
上面的Schema文档可以改写如下:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
除simpleContent外的所有复杂元素,都是complexContent(复杂内容)元素。
内容中仅含有子元素的复杂元素:
语法:
<xs:complexType>
<xs:complexContent>
<xs:restriction base="xs:anyType">
<!--定义元素组-->
</xs:restriction>
</xs:complexContent>
</xs:complexType>
例:
Schema文档:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType> /表示该元素为一个复杂元素
<xs:complexContent> /表示该元素属于复杂元素中的复杂内容
<xs:restriction base="xs:anyType"> /约束该元素为anyType类型
<xs:sequence> /表部定义的元素只能以固定顺序出现
<xs:element name="id" type="xs:integer"/> /先出现元素"id"唯一编号
<xs:element name="name" type="xs:string"/> /再出现元素"name"书名
<xs:element name="author" type="xs:string"/> /再出现元素"author"作者
<xs:element name="price" type="xs:decimal"/> /最后出现元素"price"价格
</xs:sequence>
</xs:restriction>
</xs:complexContent>
</xs:complexType>
</xs:element>
</xs:schema>
XML文档:
<?xml version="1.0"?>
<book xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="009.xsd">
<id>001</id>
<name>XML学习天下</name>
<author>李四</author>
<price>88.50</price>
</book>
注:Schema规定,如果一个复杂内容定义是使用anyType约束派生而来的,
则<xs:complexContent>和<xs:restriction base="xs:anyType">可以省略不写,这就是所谓的默认速记规则。
上面的Schema文档可以改写如下:
<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="book">
<xs:complexType>
<xs:sequence>
<xs:element name="id" type="xs:integer"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="author" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>