XSD संकर तरीका संकेतक

इंडिकेटर के माध्यम से, हम दस्तावेज़ में एलिमेंट के उपयोग को नियंत्रित कर सकते हैं。

इंडिकेटर

सात इंडिकेटर हैं:

अनुक्रम इंडिकेटर:

  • सभी
  • विकल्प
  • अनुक्रम

उद्भव इंडिकेटर:

  • maxOccurs
  • minOccurs

Group संकेतक:

  • Group name
  • attributeGroup name

Order संकेतक

Order संकेतक एक एलीमेंट के क्रम को निर्धारित करता है。

All संकेतक

<all> संकेतक उपविन्यास को निर्धारित करता है कि उपविन्यास एलीमेंट को किसी भी क्रम में प्रदर्शित किया जा सकता है, और प्रत्येक उपविन्यास केवल एक बार प्रदर्शित हो सकता है:

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

टिप्पणी:जब <all> संकेतक का उपयोग किया जाता है, तो <minOccurs> को 0 या 1 में सेट किया जा सकता है, और केवल <maxOccurs> संकेतक को 1 में सेट किया जा सकता है (जो बाद में <minOccurs> और <maxOccurs> का वर्णन किया जाएगा):

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" एलीमेंट में कम से कम एक बार (जहां 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" इस घोषणा का उपयोग करें:

एक वास्तविक उदाहरण:

"Myfamily.xml" नाम का 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" एलीमेंट होना चाहिए और यह अधिकतम 5 तक "child_name" एलीमेंट्स को शामिल कर सकता है。

यह 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 इंडिकेटर का उपयोग संबंधित एलीमेंटों के समूह को परिभाषित करने के लिए किया जाता है.

एलीमेंट ग्रुप

एलीमेंट ग्रुप ग्रुप डिफ़ाइनिशन के माध्यम से परिभाषित की जाती है:

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

आपको ग्रुप डिफ़ाइनिशन के अंदर एक all, choice या sequence एलीमेंट को परिभाषित करना होगा. इस उदाहरण में, "persongroup" नाम का एक 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>

आपके पास 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>

अटेब्यूट ग्रुप

अटेब्यूट ग्रुप अटेब्यूट ग्रुप डिफ़ाइनिशन के माध्यम से परिभाषित की जाती है:

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