Mwili wa Aina wa XSD Kichukua Indizi

通过指示器,我们可以控制在文档中使用元素的方式。

指示器

有七种指示器:

Indikator ya Order:

  • Zao
  • Muundo
  • Mwakojo

Indikator ya Kifo:

  • maxOccurs
  • minOccurs

Group inaangazia:

  • Group name
  • attributeGroup name

Inaangazia ya Order

Inaangazia ya Order inayotumiwa kuangazia uwanja wa maelezo ya kina.

Inaangazia ya All

<all> inaangazia kwamba maelezo ya kina inaweza kufikia kwa uwanja wa kama inafikia kwa uwanja wa kuzingatia, na kina kila yake inahitajika kuwa na uwanja wa kucha kwa uwanja wa kuzingatia:

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

Maelezo:Kwa kuitumia <all> inaangazia, inaweza kuweka <minOccurs> kwa uwanja wa 0 au 1, na kwa uwanja wa kucha inaweza kuweka <maxOccurs> (inaitwa kucha hivi) kwa uwanja wa 1 (inaitwa kucha hivi).

Inaangazia ya Choice

<choice> inaangazia kwamba kina fulani inaweza kufikia maelezo au inaweza kufikia maelezo mwingine (kama haujafikie kama haujafikie):

<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>

Mafano:}}Kuwa na uwanja wa kuzingatia kwa maelezo ya kina kwa uwanja wa kama inafikia kwa uwanja wa kuzingatia, inaweza kuingiza <maxOccurs> (inaitwa kucha hivi) kwa uwanja wa kucha kwa uwanja wa kuzingatia.

Inaangazia ya Sequence

<sequence> inaangazia kwamba maelezo ya kina inahitajika kuwa na uwanja wa kuzingatia kwa uwanja wa kama inafikia kwa uwanja wa kuzingatia:

<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>

Inaangazia ya Uwanja wa Urefu

Inaangazia ya Uwanja wa Urefu inayotumiwa kuangazia uwanja wa maelezo ya kina fulani.

Maelezo:Kwa maelezo "Order" na "Group" inaangazia (any, all, choice, sequence, kina jina kwa kina na kina reference), kina maxOccurs na minOccurs inayotarajiwa ni 1.

maxOccurs inaangazia

<maxOccurs> inaangazia kwamba maelezo yoyote inaweza kufikia kwa kina fulani kwa uwanja wa kama haujafikia kwa uwanja wa kuzingatia:

<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>

Mfano hapa kwamba maelezo "child_name" inaweza kufikia kwa kina "person" kwa uwanja wa kama inafikia mara moja (kwa kuzingatiawa kwamba kina minOccurs inayotarajiwa ni 1) au kwa uwanja wa kuzingatia kwa mara 10.

minOccurs inaangazia

<minOccurs> inaangazia kwamba maelezo yoyote inaweza kufikia kwa kina fulani kwa uwanja wa kama haujafikia kwa uwanja wa kuzingatia:

<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>

Mfano wa mtiririka hapa kwamba maelezo "child_name" unaweza kufikia kwenye kina "person" kwa uwanja wa kama haujafikia au kwa uwanja wa 10 wa kuzingatia.

Mafano:}}Kuwa tumekuwa na uwanja wa kuzingatia kwa kila kitu, tumekuwa na kufikia maxOccurs="unbounded" kwa ujumbe huo:

Mfano wa maelezo:

Faili ya XML ya "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>

Faili hii ya XML ina elementi kuu ya "persons". Ina elementi "person" tatu kwa kwa kina elementi "full_name" mara moja, na inaweza kuwa na elementi "child_name" hadi 5 mara.

Hii ni faili ya schema peana "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 kipya cha indababu

Group kipya cha indababu kinasababisha kigezo cha maboundo yenye ukosemu:

Kigezo cha element

Kigezo cha element kinaandikwa kupitia kichwa cha group:

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

Inafaa kuzingatia kwamba wajipange group kichwa cha kufikia kwa sababu hii, maelezo huu huzungumza kuhusu kigezo la group linaloitwa "persongroup", ambalo linakadiriwa kuwa inatokana na maboundo yenye mawendo tofauti ya kina:

<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>

Baada ya kufanya kigezo cha group, inafaa kushangaza kwa kigezo kingine:

<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>

Kigezo cha jina

Kigezo cha jina kinaandikwa kupitia kichwa cha attributeGroup:

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

Mfano huo huzungumza kuhusu kigezo la jina linaloitwa "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>

Kwa kushika kuzingatia kwa sababu ina ufunzi wa jina, inafaa kufanya hivyo:

<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>