एक्सएमएल ट्यूटोरियल

एक्सएमएल होम एक्सएमएल परिचय एक्सएमएल कैसे इस्तेमाल करें एक्सएमएल ट्री एक्सएमएल सिंटैक्स एक्सएमएल तत्व एक्सएमएल गुण एक्सएमएल नेमस्पेस एक्सएमएल डिस्प्ले एक्सएमएल एचटीपीअनुरोध एक्सएमएल पार्सर एक्सएमएल डोम एक्सएमएल XPath एक्सएमएल एक्सएसएलटी एक्सएमएल XQuery एक्सएमएल एक्सलिंक एक्सएमएल सत्यापनकर्ता एक्सएमएल डीटीडी एक्सएमएल स्कीमा एक्सएमएल सर्वर एक्सएमएल उदाहरण एक्सएमएल प्रश्नोत्तरी एक्सएमएल प्रमाणपत्र

एक्सएमएल अजाक्स

AJAX परिचय अजाक्स एक्सएमएलएचटीपी अजाक्स अनुरोध अजाक्स प्रतिक्रिया अजाक्स एक्सएमएल फ़ाइल अजाक्स पीएचपी अजाक्स एएसपी AJAX डेटाबेस अजाक्स अनुप्रयोग अजाक्स उदाहरण

एक्सएमएल डोम

डोम परिचय डोम नोड्स डोम एक्सेसिंग डोम नोड जानकारी डोम नोड सूची डोम ट्रैवर्सिंग डोम नेविगेटिंग डोम मूल्य प्राप्त करें डोम चेंज नोड्स डोम नोड्स निकालें डोम नोड्स बदलें डोम नोड्स बनाएं डोम नोड्स जोड़ें डोम क्लोन नोड्स डोम उदाहरण

XPath ट्यूटोरियल

XPath परिचय XPath नोड्स XPath सिंटैक्स XPath अक्ष XPath ऑपरेटर्स XPath उदाहरण

एक्सएसएलटी ट्यूटोरियल

एक्सएसएलटी परिचय एक्सएसएल भाषाएं एक्सएसएलटी ट्रांसफॉर्म एक्सएसएलटी <टेम्पलेट> एक्सएसएलटी <मूल्य का> एक्सएसएलटी <प्रत्येक के लिए> एक्सएसएलटी <सॉर्ट> एक्सएसएलटी <अगर> एक्सएसएलटी <चुनें> एक्सएसएलटी लागू करें क्लाइंट पर एक्सएसएलटी सर्वर पर एक्सएसएलटी एक्सएसएलटी एक्सएमएल संपादित करें एक्सएसएलटी उदाहरण

XQuery ट्यूटोरियल

XQuery परिचय XQuery उदाहरण XQuery FLWOR XQuery एचटीएमएल XQuery शर्तें XQuery सिंटैक्स XQuery जोड़ें XQuery चुनें XQuery कार्य

एक्सएमएल डीटीडी

डीटीडी परिचय डीटीडी बिल्डिंग ब्लॉक्स डीटीडी तत्व डीटीडी गुण DTD एलिमेंट्स बनाम Attr डीटीडी इकाइयां डीटीडी उदाहरण

एक्सएसडी स्कीमा

एक्सएसडी परिचय एक्सएसडी कैसे करें एक्सएसडी <स्कीमा> एक्सएसडी तत्व एक्सएसडी गुण एक्सएसडी प्रतिबंध

एक्सएसडी कॉम्प्लेक्स

एक्सएसडी तत्व एक्सएसडी खाली केवल एक्सएसडी तत्व केवल एक्सएसडी पाठ एक्सएसडी मिश्रित एक्सएसडी संकेतक एक्सएसडी <कोई भी> एक्सएसडी <anyAttribute> एक्सएसडी प्रतिस्थापन एक्सएसडी उदाहरण

एक्सएसडी डेटा

एक्सएसडी स्ट्रिंग एक्सएसडी तिथि एक्सएसडी न्यूमेरिक एक्सएसडी विविध एक्सएसडी संदर्भ

वेब सेवाएं

एक्सएमएल सेवाएं एक्सएमएल डब्लूएसडीएल एक्सएमएल साबुन एक्सएमएल आरडीएफ एक्सएमएल आरएसएस

संदर्भ

डोम नोड प्रकार डोम नोड डोम नोडसूची डोम नेम नोडमैप डोम दस्तावेज़ डोम तत्व डोम विशेषता डोम टेक्स्ट डोम सीडीएटीए डोम टिप्पणी डोम एक्सएमएलएचटीटीपीअनुरोध डोम पार्सर एक्सएसएलटी तत्व एक्सएसएलटी/XPath फ़ंक्शंस

एक एक्सएसडी उदाहरण


यह अध्याय प्रदर्शित करेगा कि XML स्कीमा कैसे लिखना है। आप यह भी सीखेंगे कि एक स्कीमा को विभिन्न तरीकों से लिखा जा सकता है।


एक एक्सएमएल दस्तावेज़

आइए इस XML दस्तावेज़ पर एक नज़र डालते हैं जिसे "shiporder.xml" कहा जाता है:

<?xml version="1.0" encoding="UTF-8"?>

<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
  <orderperson>John Smith</orderperson>
  <shipto>
    <name>Ola Nordmann</name>
    <address>Langgt 23</address>
    <city>4000 Stavanger</city>
    <country>Norway</country>
  </shipto>
  <item>
    <title>Empire Burlesque</title>
    <note>Special Edition</note>
    <quantity>1</quantity>
    <price>10.90</price>
  </item>
  <item>
    <title>Hide your heart</title>
    <quantity>1</quantity>
    <price>9.90</price>
  </item>
</shiporder>

उपरोक्त एक्सएमएल दस्तावेज़ में एक मूल तत्व, "शिपऑर्डर" होता है, जिसमें "ऑर्डरिड" नामक एक आवश्यक विशेषता होती है। "शिपऑर्डर" तत्व में तीन अलग-अलग बाल तत्व होते हैं: "ऑर्डरपर्सन", "शिप्टो" और "आइटम"। "आइटम" तत्व दो बार प्रकट होता है, और इसमें एक "शीर्षक", एक वैकल्पिक "नोट" तत्व, एक "मात्रा" और एक "मूल्य" तत्व होता है।

उपरोक्त पंक्ति: xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" XML पार्सर को बताती है कि इस दस्तावेज़ को एक स्कीमा के विरुद्ध मान्य किया जाना चाहिए। पंक्ति: xsi:noNamespaceSchemaLocation="shiporder.xsd" निर्दिष्ट करती है कि स्कीमा कहाँ स्थित है (यहाँ यह "shiporder.xml" के समान फ़ोल्डर में है)।



एक एक्सएमएल स्कीमा बनाएं

अब हम उपरोक्त XML दस्तावेज़ के लिए एक स्कीमा बनाना चाहते हैं।

हम एक नई फाइल खोलकर शुरू करते हैं जिसे हम "shiporder.xsd" कहेंगे। स्कीमा बनाने के लिए हम एक्सएमएल दस्तावेज़ में संरचना का पालन कर सकते हैं और प्रत्येक तत्व को परिभाषित कर सकते हैं जैसा हम पाते हैं। हम मानक XML घोषणा के साथ शुरू करेंगे, उसके बाद xs:schema तत्व जो एक स्कीमा को परिभाषित करता है:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
</xs:schema>

ऊपर दिए गए स्कीमा में हम मानक नाम स्थान (xs) का उपयोग करते हैं, और इस नाम स्थान से संबद्ध URI स्कीमा भाषा परिभाषा है, जिसका मानक मान http://www.w3.org/2001/XMLSchema है।

अगला, हमें "शिपऑर्डर" तत्व को परिभाषित करना होगा। इस तत्व में एक विशेषता होती है और इसमें अन्य तत्व होते हैं, इसलिए हम इसे एक जटिल प्रकार मानते हैं। "शिपऑर्डर" तत्व के बाल तत्व एक xs: अनुक्रम तत्व से घिरे होते हैं जो उप तत्वों के क्रमबद्ध अनुक्रम को परिभाषित करता है:

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      ...
    </xs:sequence>
  </xs:complexType>
</xs:element>

फिर हमें "ऑर्डरपर्सन" तत्व को एक साधारण प्रकार के रूप में परिभाषित करना होगा (क्योंकि इसमें कोई विशेषता या अन्य तत्व नहीं होते हैं)। प्रकार (xs:string) XML स्कीमा से जुड़े नामस्थान उपसर्ग के साथ उपसर्ग है जो एक पूर्वनिर्धारित स्कीमा डेटा प्रकार को इंगित करता है:

<xs:element name="orderperson" type="xs:string"/>

इसके बाद, हमें जटिल प्रकार के दो तत्वों को परिभाषित करना होगा: "शिप्टो" और "आइटम"। हम "शिप्टो" तत्व को परिभाषित करके शुरू करते हैं:

<xs:element name="shipto">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="address" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="country" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

स्कीमा के साथ हम maxOccurs और minOccurs विशेषताओं वाले तत्व के लिए संभावित घटनाओं की संख्या को परिभाषित कर सकते हैं। maxOccurs किसी तत्व के लिए घटनाओं की अधिकतम संख्या निर्दिष्ट करता है और minOccurs किसी तत्व के लिए न्यूनतम संख्या को निर्दिष्ट करता है। maxOccurs और minOccurs दोनों के लिए डिफ़ॉल्ट मान 1 है!

अब हम "आइटम" तत्व को परिभाषित कर सकते हैं। यह तत्व "शिपऑर्डर" तत्व के अंदर कई बार प्रकट हो सकता है। यह "आइटम" तत्व की maxOccurs विशेषता को "अनबाउंड" पर सेट करके निर्दिष्ट किया जाता है जिसका अर्थ है कि लेखक की इच्छा के अनुसार "आइटम" तत्व की कई घटनाएं हो सकती हैं। ध्यान दें कि "नोट" तत्व वैकल्पिक है। हमने minOccurs विशेषता को शून्य पर सेट करके इसे निर्दिष्ट किया है:

<xs:element name="item" maxOccurs="unbounded">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="title" type="xs:string"/>
      <xs:element name="note" type="xs:string" minOccurs="0"/>
      <xs:element name="quantity" type="xs:positiveInteger"/>
      <xs:element name="price" type="xs:decimal"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

अब हम "शिपऑर्डर" तत्व की विशेषता घोषित कर सकते हैं। चूंकि यह एक आवश्यक विशेषता है, इसलिए हम उपयोग = "आवश्यक" निर्दिष्ट करते हैं।

नोट: विशेषता घोषणाएं हमेशा अंतिम होनी चाहिए:

<xs:attribute name="orderid" type="xs:string" use="required"/>

यहाँ "shiporder.xsd" नामक स्कीमा फ़ाइल की पूरी सूची है:

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="orderperson" type="xs:string"/>
      <xs:element name="shipto">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="name" type="xs:string"/>
            <xs:element name="address" type="xs:string"/>
            <xs:element name="city" type="xs:string"/>
            <xs:element name="country" type="xs:string"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
      <xs:element name="item" maxOccurs="unbounded">
        <xs:complexType>
          <xs:sequence>
            <xs:element name="title" type="xs:string"/>
            <xs:element name="note" type="xs:string" minOccurs="0"/>
            <xs:element name="quantity" type="xs:positiveInteger"/>
            <xs:element name="price" type="xs:decimal"/>
          </xs:sequence>
        </xs:complexType>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="orderid" type="xs:string" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

स्कीमा को विभाजित करें

पिछली डिज़ाइन विधि बहुत सरल है, लेकिन दस्तावेज़ जटिल होने पर इसे पढ़ना और बनाए रखना मुश्किल हो सकता है।

अगली डिज़ाइन विधि पहले सभी तत्वों और विशेषताओं को परिभाषित करने पर आधारित है, और फिर रेफरी विशेषता का उपयोग करके उन्हें संदर्भित करती है।

यहाँ स्कीमा फ़ाइल का नया डिज़ाइन है ("shiporder.xsd"):

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>

<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>

<!-- definition of complex elements -->
<xs:element name="shipto">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="name"/>
      <xs:element ref="address"/>
      <xs:element ref="city"/>
      <xs:element ref="country"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="item">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="title"/>
      <xs:element ref="note" minOccurs="0"/>
      <xs:element ref="quantity"/>
      <xs:element ref="price"/>
    </xs:sequence>
  </xs:complexType>
</xs:element>

<xs:element name="shiporder">
  <xs:complexType>
    <xs:sequence>
      <xs:element ref="orderperson"/>
      <xs:element ref="shipto"/>
      <xs:element ref="item" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute ref="orderid" use="required"/>
  </xs:complexType>
</xs:element>

</xs:schema>

नामांकित प्रकारों का उपयोग करना

तीसरी डिज़ाइन विधि कक्षाओं या प्रकारों को परिभाषित करती है, जो हमें तत्व परिभाषाओं का पुन: उपयोग करने में सक्षम बनाती है। यह सरल प्रकार और जटिल प्रकार तत्वों का नामकरण करके किया जाता है, और फिर तत्व के प्रकार विशेषता के माध्यम से उन्हें इंगित करता है।

यहाँ स्कीमा फ़ाइल का तीसरा डिज़ाइन है ("shiporder.xsd"):

<?xml version="1.0" encoding="UTF-8" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

<xs:simpleType name="stringtype">
  <xs:restriction base="xs:string"/>
</xs:simpleType>

<xs:simpleType name="inttype">
  <xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>

<xs:simpleType name="dectype">
  <xs:restriction base="xs:decimal"/>
</xs:simpleType>

<xs:simpleType name="orderidtype">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9]{6}"/>
  </xs:restriction>
</xs:simpleType>

<xs:complexType name="shiptotype">
  <xs:sequence>
    <xs:element name="name" type="stringtype"/>
    <xs:element name="address" type="stringtype"/>
    <xs:element name="city" type="stringtype"/>
    <xs:element name="country" type="stringtype"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="itemtype">
  <xs:sequence>
    <xs:element name="title" type="stringtype"/>
    <xs:element name="note" type="stringtype" minOccurs="0"/>
    <xs:element name="quantity" type="inttype"/>
    <xs:element name="price" type="dectype"/>
  </xs:sequence>
</xs:complexType>

<xs:complexType name="shipordertype">
  <xs:sequence>
    <xs:element name="orderperson" type="stringtype"/>
    <xs:element name="shipto" type="shiptotype"/>
    <xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
  </xs:sequence>
  <xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>

<xs:element name="shiporder" type="shipordertype"/>

</xs:schema>

प्रतिबंध तत्व इंगित करता है कि डेटाटाइप W3C XML स्कीमा नेमस्पेस डेटाटाइप से लिया गया है। तो, निम्नलिखित खंड का अर्थ है कि तत्व या विशेषता का मान एक स्ट्रिंग मान होना चाहिए:

<xs:restriction base="xs:string">

प्रतिबंध तत्व का उपयोग अक्सर तत्वों पर प्रतिबंध लगाने के लिए किया जाता है। उपरोक्त स्कीमा से निम्नलिखित पंक्तियों को देखें:

<xs:simpleType name="orderidtype">
  <xs:restriction base="xs:string">
    <xs:pattern value="[0-9]{6}"/>
  </xs:restriction>
</xs:simpleType>

यह इंगित करता है कि तत्व या विशेषता का मान एक स्ट्रिंग होना चाहिए, यह एक पंक्ति में ठीक छह वर्ण होना चाहिए, और वे वर्ण 0 से 9 तक की संख्या होनी चाहिए।