XSD入门--part5

XSD复合元素

前面已经认识了XSD简单元素,接着就要进入XSD复合元素。何为复合元素?

定义——复合元素指包含其他元素或者其他元素属性的XML元素。

四种类型的复合元素(均包含属性):

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

空元素:

<name id="12345"/>

包含其他元素的元素:

<user>
<username>admin</username>
<password>admin</password>
</user>

仅包含文本的元素:

<book type="IT">Java</book>

包含元素和文本的元素:

<books>
<book type="IT">Java</book>
</books>

定义如下复合元素:

<user>
<username>admin</username>
<password>admin</password>
</user>

方法一,直接对"user"元素声明:

<xs:element name="user">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="username" type="xs:string"/>
      <xs:element name="password" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

 指示器 <sequence>指明了其中的子元素"username"和"password"必须按照次序出现。

方法二,"user"元素可以使用type属性,若干元素均可以使用相同的复合类型:

<xs:element name="user" type="userInfo"/>
<xs:element name="guest" type="userInfo"/>
<xs:element name="administrator" type="userInfo"/>

<xs:complexType name="userInfo">
  <xs:sequence>
    <xs:element name="username" type="xs:string"/>
    <xs:element name="password" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

 当然我们我可以以某个复合元素为基础,继续添加一些元素:

<xs:element name="user" type="fullUserInfo"/>

<xs:complexType name="userInfo">
  <xs:sequence>
    <xs:element name="username" type="xs:string"/>
    <xs:element name="password" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="fullUserInfo">
  <xs:complexContent>
    <xs:extension base="userInfo">
      <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>

猜你喜欢

转载自meros-z.iteye.com/blog/2290305