XSD 复合类型指示器

ຜ່ານສັນຍາສະຖານະການນັ້ນເຮົາສາມາດຄວບຄຸມວິທີທີ່ນັ້ນຫຼິ້ນໃນເອກະສານ.

ສັນຍາສະຖານະການ

ມີສັນຍາສະຖານະການຈຳນວນເຈັດອັນ

ສັນຍາສະຖານະການລຳດັບ

  • All
  • Choice
  • Sequence

ສັນຍາສະຖານະການການເກີດຄັ້ງ

  • maxOccurs
  • minOccurs

ສັນຍາກຸ່ມສັນຍາ

  • ຊື່ກຸ່ມ
  • attributeGroup name

Order 指示器

Order 指示器用于定义元素的顺序。

All 指示器

指示器规定子元素可以按照任意顺序出现,且每个子元素必须只出现一次:

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

ຂໍ້ສັງເກດ:当使用 指示器时,你可以把 设置为 0 或者 1,而只能把 指示器设置为 1(稍后将讲解 以及 )。

Choice ສະແຫວງຫນັງ

<choice> ສະແຫວງຫນັງວ່າປັດຈຸສາມາດປະກົດຢູ່ຫນັງປັດຈຸອື່ນໆ (ບໍ່ມີສິ່ງອື່ນໆ):

<xs:element name="person">
  <xs:complexType>
    <xs:choice>
      <xs:element name="employee" type="employee"/>
      <xs:element name="member" type="member"/>
    </xs:choice>
  </xs:complexType>
</xs:element>

ຂໍ້ສັງເກດ:ຖ້າຕ້ອງການການປະກົດປັດຈຸຜູ້ລົງມາຢູ່ບໍ່ມີຈຳນວນສະຖານະການ, ຂ້ອຍສະແຫວງຫນັງ <maxOccurs> (ຈະຖືກຫາຫາກາຍ) ສະແດງວ່າ unbounded (ບໍ່ມີຈຳນວນສະຖານະການ).

Sequence ສະແຫວງຫນັງ

<sequence> ສະແດງວ່າປັດຈຸຜູ້ລົງມາຕ້ອງຈະປະກົດຢູ່ຕາມອິດທິພົນ:

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

Occurrence ສະແຫວງຫນັງ

Occurrence ສະແຫວງຫນັງສະແດງວ່າການປະກົດຂອງປັດຈຸ.

ຂໍ້ສັງເກດ:ສຳລັບປັດຈຸ "Order" ແລະ "Group" ສະແຫວງຫນັງ (any, all, choice, sequence, group name ແລະ group reference), maxOccurs ແລະ minOccurs ມີຄວາມຜົນທົດສະຫຼາກ 1.

maxOccurs ສະແຫວງຫນັງ

<maxOccurs> ສະແຫວງຫນັງສະແດງວ່າປັດຈຸສາມາດປະກົດຢູ່ຢ່າງໜ້ອຍຫນັງ:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string" maxOccurs="10"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

ບົດຢ່າງດັ່ງກ່າວນີ້ສະແຫວງຫນັງວ່າປັດຈຸ "child_name" ສາມາດປະກົດຢູ່ໃນປັດຈຸ "person" ຢ່າງໜ້ອຍ 1 ຄັ້ງ (ທີ່ຢູ່ໃນຂໍ້ສະແຫວງຫນັງ minOccurs ມີຄວາມຜົນທົດສະຫຼາກ 1), ແລະຢ່າງຫຼາຍສຸດ 10 ຄັ້ງ.

minOccurs ສະແຫວງຫນັງ

<minOccurs> ສະແຫວງຫນັງສະແດງວ່າປັດຈຸສາມາດປະກົດຢູ່ຢ່າງໜ້ອຍຫນັງ:

<xs:element name="person">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="full_name" type="xs:string"/>
      <xs:element name="child_name" type="xs:string"
      maxOccurs="10" minOccurs="0"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

ບົດຢ່າງດັ່ງກ່າວນີ້ສະແຫວງຫນັງວ່າປັດຈຸ "child_name" ສາມາດປະກົດຢູ່ໃນປັດຈຸ "person" ຢ່າງໜ້ອຍ 0 ຄັ້ງ, ແລະຢ່າງຫຼາຍສຸດ 10 ຄັ້ງ.

ຂໍ້ສັງເກດ:ສະແຫວງຫນັງ: ຖ້າຕ້ອງການໃຫ້ການປະກົດຂອງປັດຈຸບັນບໍ່ມີຈຳນວນສະຖານະການ, ຂ້ອຍສະແຫວງຫນັງ maxOccurs="unbounded" ນີ້:

ຕົວຢ່າງທີ່ຈະມີຢູ່:}

ເອກະສານ XML ທີ່ຊື່ "Myfamily.xml":

<?xml version="1.0" encoding="ISO-8859-1"?>
<persons xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="family.xsd">
<person>
<full_name>Tony Smith</full_name>
<child_name>Cecilie</child_name>
</person>
<person>
<full_name>David Smith</full_name>
<child_name>Jogn</child_name>
<child_name>mike</child_name>
<child_name>kyle</child_name>
<child_name>mary</child_name>
</person>
<person>
<full_name>Michael Smith</full_name>
</person>
</persons>

ເອກະສານ XML ດັ່ງກ່າວນີ້ມີບັນດາບັນຫາ "persons" ທີ່ເປັນບັນດາບັນຫາທີ່ສະຫຼາກ. ພາຍໃນບັນດາບັນຫາດັ່ງກ່າວນີ້, ພວກເຮົາໄດ້ກໍ່ຕັ້ງບັນດາບັນຫາ "person" ສາມບັນດາ. ບັນດາບັນຫາ "person" ຕ້ອງມີບັນດາບັນຫາ "full_name" ແລະສາມາດມີບັນດາບັນຫາ "child_name" ສູງສຸດ 5.

ນີ້ແມ່ນເອກະສານ schema "family.xsd":

<?xml version="1.0" encoding="ISO-8859-1"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="persons">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="person" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="full_name" type="xs:string"/>
            <xs:element name="child_name" type="xs:string"
            minOccurs="0" maxOccurs="5"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
  </xs:complexType>
</xs:element>
</xs:schema>

ສັນຍາການ Group

ສັນຍາການ Group ຕົວຈາກການສະແດງປະກອບສາຍວັດສະດຸທີ່ກ່ຽວຂ້ອງ.

ບັນດາລັກສະນະພາບ

ບັນດາລັກສະນະພາບສາມາດຖືກກໍ່ຕັ້ງຜ່ານການອະທິບາຍ group:

<xs:group name="组名称">
  ...
</xs:group>

ເຈົ້າຕ້ອງການກໍ່ຕັ້ງໜຶ່ງໃນປະກອບຂອງ all, choice ຫລື sequence ໃນການອະທິບາຍ group. ບົດການນັ້ນລະບຸວ່າມີ groupຊື່ "persongroup" ທີ່ກໍ່ຕັ້ງບັນດາລັກສະນະພາບທີ່ຕ້ອງອາດຈະປະກອບກັນໃນລຳດັບທີ່ສະເພາະ:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>

ພຽງແຕ່ທີ່ເຈົ້າໄດ້ການສ້າງຂອງ groupຂອງເຈົ້າກໍ່ຈະສາມາດອ້າງຄືນມັນໃນການກໍ່ຕັ້ງອື່ນໆ:

<xs:group name="persongroup">
  <xs:sequence>
    <xs:element name="firstname" type="xs:string"/>
    <xs:element name="lastname" type="xs:string"/>
    <xs:element name="birthday" type="xs:date"/>
  </xs:sequence>
</xs:group>
<xs:element name="person" type="personinfo"/>
<xs:complexType name="personinfo">
  <xs:sequence>
    <xs:group ref="persongroup"/>
    <xs:element name="country" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

ບັນດາລັກສະນະພາບ

ບັນດາລັກສະນະພາບສາມາດຖືກກໍ່ຕັ້ງຜ່ານການອະທິບາຍ attributeGroup:

<xs:attributeGroup name="组名称">
  ...
</xs:attributeGroup>

ບົດການນັ້ນລະບຸວ່າມີບັນດາລັກສະນະພາບຊື່ວ່າ "personattrgroup":

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>

ພຽງແຕ່ທີ່ເຈົ້າໄດ້ການສ້າງຂອງບັນດາລັກສະນະພາບລະບົບພາຍໃນຂອງເຈົ້າກໍ່ຈະສາມາດອ້າງຄືນມັນໃນການກໍ່ຕັ້ງອື່ນໆໄດ້ຫນັງນັ້ນ:

<xs:attributeGroup name="personattrgroup">
  <xs:attribute name="firstname" type="xs:string"/>
  <xs:attribute name="lastname" type="xs:string"/>
  <xs:attribute name="birthday" type="xs:date"/>
</xs:attributeGroup>
<xs:element name="person">
  <xs:complexType>
    <xs:attributeGroup ref="personattrgroup"/>
  </xs:complexType>
</xs:element>