JSRUN 用代码说话

复合元素

编辑教程

复合元素

通过本节内容,你将了解 XML Schema 的复合元素,以及在 XML Schema 中,复合元素应该如何定义。 复合元素包含了其他的元素及/或属性。

什么是复合元素?

复合元素指包含其他元素及/或属性的 XML 元素。

有四种类型的复合元素:

空元素
包含其他元素的元素
仅包含文本的元素
包含元素和文本的元素

注意: 上述元素均可包含属性!

复合元素示例

复合元素,"product",是空的:

 <product pid="1345"/>

复合元素,"employee",仅包含其他元素:

 <employee>
   <firstname>John</firstname>
   <lastname>Smith</lastname>
 </employee>

复合 XML 元素,"food",仅包含文本:

 <food type="dessert">Ice cream</food>

复合XML元素,"description"包含元素和文本:

 <description>
 It happened on <date lang="norwegian">03.03.99</date> ....
 </description>

如何定义复合元素?

请看这个复合 XML 元素,"employee",仅包含其他元素:

 <employee>
   <firstname>John</firstname>
   <lastname>Smith</lastname>
 </employee>

在 XML Schema 中,我们有两种方式来定义复合元素:

通过命名此元素,可直接对"employee"元素进行声明,就像这样:

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

假如您使用上面所描述的方法,那么仅有 "employee" 可使用所规定的复合类型。

注意其子元素,"firstname" 以及 "lastname",被包围在指示器 <sequence>中。这意味着子元素必须以它们被声明的次序出现。您会在 XSD 指示器 这一节学习更多有关指示器的知识。

"employee" 元素可以使用 type 属性,这个属性的作用是引用要使用的复合类型的名称:

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

 <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:element name="employee" type="personinfo"/>
 <xs:element name="student" type="personinfo"/>
 <xs:element name="member" type="personinfo"/>

 <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: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>
JSRUN闪电教程系统是国内最先开创的教程维护系统, 所有工程师都可以参与共同维护的闪电教程,让知识的积累变得统一完整、自成体系。 大家可以一起参与进共编,让零散的知识点帮助更多的人。
X
支付宝
9.99
无法付款,请点击这里
金额: 0
备注:
转账时请填写正确的金额和备注信息,到账由人工处理,可能需要较长时间
如有疑问请联系QQ:565830900
正在生成二维码, 此过程可能需要15秒钟