ਇੱਕ XSD ਇੰਸਟੈਂਸ

ਇਸ ਸੈਕਸ਼ਨ ਵਿੱਚ ਤੁਹਾਨੂੰ XML Schema ਲਿਖਣ ਦੀ ਪ੍ਰਦਰਸ਼ਨ ਦਿੱਤੀ ਜਾਵੇਗੀ। ਤੁਸੀਂ ਸਕੀਮਾ ਲਿਖਣ ਦੇ ਵੱਖ-ਵੱਖ ਤਰੀਕਿਆਂ ਨੂੰ ਵੀ ਸਿੱਖਣਗੇ।

XML ਦਸਤਾਵੇਜ਼

ਇਸ ਨਾਮ ਵਾਲੇ "shiporder.xml" XML ਦਸਤਾਵੇਜ਼ ਨੂੰ ਦੇਖੀਏ:

<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923">
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
 <orderperson>George Bush</orderperson>
 <shipto>
  <name>John Adams</name>
  <address>Oxford Street</address>
  <city>London</city>
  <country>UK</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>

ਉੱਤੇ ਦਿਸਦਾ XML ਦਸਤਾਵੇਜ਼ ਮੂਲ ਤੰਤਰ "shiporder" ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ ਜਿਸ ਵਿੱਚ ਪ੍ਰਮਾਣਿਤ ਰੂਪ ਨਾਲ "orderid" ਦਾ ਗੁਣ ਹੈ। "shiporder" ਤੰਤਰ ਤਿੰਨ ਵੱਖ-ਵੱਖ ਉਪ-ਤੰਤਰਾਂ: "orderperson"、"shipto" ਅਤੇ "item" ਨੂੰ ਸ਼ਾਮਲ ਕਰਦਾ ਹੈ। "item" ਤੰਤਰ ਦੋ ਵਾਰ ਦਿਸਦਾ ਹੈ ਜਿਸ ਵਿੱਚ "title" ਇੱਕ ਵਿਕਲਪਿਤ "note" ਤੰਤਰ ਇੱਕ "quantity" ਅਤੇ ਇੱਕ "price" ਤੰਤਰ ਹੈ。

ਉੱਤੇ ਇਹ ਪਲੇਸ਼ਹਾਰ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"، ਐਲਾਨ ਕਰਦਾ ਹੈ ਕਿ XML ਪਾਰਸਿੰਗ ਲਈ ਕਿਸੇ ਸਕੀਮਾ ਨੂੰ ਪ੍ਰਮਾਣਿਤ ਕਰੇ। ਇਹ ਪਲੇਸ਼ਹਾਰ: xsi:noNamespaceSchemaLocation="shiporder.xsd" ਸਕੀਮਾ ਦਾ ਸਥਾਨ (ਇੱਥੇ ਇਹ "shiporder.xml" ਦੇ ਅਜਿਹੇ ਫੋਲਡਰ ਵਿੱਚ ਹੈ) ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ。

ਇੱਕ XML Schema ਬਣਾਉਣਾ

ਹੁਣ, ਅਸੀਂ ਉੱਪਰੋਕਤ XML ਦਸਤਾਵੇਜ਼ ਲਈ ਇੱਕ schema ਬਣਾਉਣਾ ਹੈ。

ਅਸੀਂ ਇੱਕ ਨਵਾਂ ਫਾਈਲ ਖੋਲ੍ਹ ਸਕਦੇ ਹਾਂ ਅਤੇ ਇਸ ਨੂੰ "shiporder.xsd" ਨਾਮ ਦਿੱਤਾ ਸਕਦੇ ਹਾਂ। schema ਬਣਾਉਣ ਲਈ, ਅਸੀਂ ਸਿਰਫ XML ਦਸਤਾਵੇਜ਼ ਦੀ ਸਰਗਰਮੀ ਦੀ ਪਾਲਣਾ ਕਰਨਾ ਹੈ, ਅਤੇ ਅਸੀਂ ਜਿਸ ਨੂੰ ਪਤਾ ਲਗਾਇਆ ਹੈ ਹਰ ਐਲੀਮੈਂਟ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਹੈ। ਪਹਿਲਾਂ ਅਸੀਂ ਇੱਕ ਮਿਆਰੀ XML ਐਲਾਨ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ:

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

ਉੱਪਰੋਕਤ schema ਵਿੱਚ, ਅਸੀਂ ਮਿਆਰੀ ਨਾਮ ਸਪੇਸ (xs) ਦੀ ਵਰਤੋਂ ਕੀਤੀ ਹੈ ਜਿਸ ਨਾਲ ਸਬੰਧਤ ਯੂਆਰਆਈ ਹੈ Schema ਦੇ ਟਾਈਪ ਦੀ ਪਰਿਭਾਸ਼ਾ (Schema language definition) ਜਿਸ ਦਾ ਮਿਆਰੀ ਮੁੱਲ http://www.w3.org/2001/XMLSchema ਹੈ。

ਅਗਲੇ, ਅਸੀਂ "shiporder" ਐਲੀਮੈਂਟ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਹੈ। ਇਹ ਐਲੀਮੈਂਟ ਇੱਕ ਅਤੀਤ ਹੈ ਜਿਸ ਵਿੱਚ ਹੋਰ ਐਲੀਮੈਂਟ ਹਨ, ਇਸ ਲਈ ਅਸੀਂ ਇਸਨੂੰ ਕੰਪਲੈਕਸ ਟਾਈਪ ਮੰਨਦੇ ਹਾਂ। "shiporder" ਐਲੀਮੈਂਟ ਦੇ ਉਪ-ਐਲੀਮੈਂਟ ਨੂੰ xs:sequence ਐਲੀਮੈਂਟ ਦੇ ਅੰਦਰ ਰੱਖਿਆ ਗਿਆ ਹੈ ਜਿਸ ਨਾਲ ਉਪ-ਐਲੀਮੈਂਟਾਂ ਦੀ ਕਿਸਮ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕੀਤਾ ਗਿਆ ਹੈ:

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

ਤਦ ਅਸੀਂ "orderperson" ਐਲੀਮੈਂਟ ਨੂੰ ਸਰਲ ਟਾਈਪ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਹੈ (ਇਹ ਇਸ ਲਈ ਹੈ ਕਿਉਂਕਿ ਇਸ ਵਿੱਚ ਕੋਈ ਅਤੀਤ ਜਾਂ ਹੋਰ ਐਲੀਮੈਂਟ ਨਹੀਂ ਹੈ)। ਟਾਈਪ (xs:string) ਦਾ ਪ੍ਰੋਫਿਕਸ ਨਾਮ ਸਪੇਸ ਦੇ ਪ੍ਰੋਫਿਕਸ ਰੂਪ ਵਿੱਚ ਨਿਰਧਾਰਿਤ ਹੁੰਦਾ ਹੈ ਜੋ ਕਿ XML schema ਦੇ ਪ੍ਰਿਭਾਸ਼ਿਤ ਟਾਈਪਾਂ ਨਾਲ ਸਬੰਧਤ ਹੈ:

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

ਅਗਲੇ ਮੈਂ ਦੋ ਐਲੀਮੈਂਟਾਂ ਨੂੰ ਕੰਪਲੈਕਸ ਟਾਈਪ ਵਜੋਂ ਪਰਿਭਾਸ਼ਿਤ ਕਰਨਾ ਹੈ: "shipto" ਅਤੇ "item"। ਅਸੀਂ "shipto" ਐਲੀਮੈਂਟ ਦੀ ਪਰਿਭਾਸ਼ਾ ਨਾਲ ਸ਼ੁਰੂ ਕਰਦੇ ਹਾਂ:

<xs:element name="shipto">
 <xs:complexType>
  
   <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>

schema ਦੁਆਰਾ, ਅਸੀਂ maxOccurs ਅਤੇ minOccurs ਅਤੀਤ ਦੀ ਮਦਦ ਨਾਲ ਕਿਸੇ ਐਲੀਮੈਂਟ ਦੀ ਸੰਖਿਆ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ। maxOccurs ਕਿਸੇ ਐਲੀਮੈਂਟ ਦੀ ਸੰਖਿਆ ਦਾ ਮਹੱਤਵਪੂਰਣ ਮੁੱਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ ਜਦਕਿ minOccurs ਕਿਸੇ ਐਲੀਮੈਂਟ ਦੀ ਸੰਖਿਆ ਦਾ ਨਿਮਨਤਮ ਮੁੱਲ ਪਰਿਭਾਸ਼ਿਤ ਕਰਦਾ ਹੈ। maxOccurs ਅਤੇ minOccurs ਦੀਆਂ ਮੂਲ ਕੀਮਤਾਂ 1 ਹਨ!

ਹੁਣ ਅਸੀਂ "item" ਐਲੀਮੈਂਟ ਨੂੰ ਪਰਿਭਾਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਹ ਐਲੀਮੈਂਟ "shiporder" ਐਲੀਮੈਂਟ ਦੇ ਅੰਦਰ ਕਈ ਵਾਰ ਦਿਖਾਈ ਦੇ ਸਕਦਾ ਹੈ। ਇਹ "item" ਐਲੀਮੈਂਟ ਦੇ maxOccurs ਅਤੀਤ ਦੀ ਕੀਮਤ ਨੂੰ "unbounded" ਰੱਖ ਕੇ ਹੋਇਆ ਹੈ ਜਿਸ ਨਾਲ "item" ਐਲੀਮੈਂਟ ਕਿਸੇ ਵੀ ਸੰਖਿਆ ਵਿੱਚ ਦਿਖਾਈ ਦੇ ਸਕਦਾ ਹੈ। ਲੁਕੇਂ, "note" ਐਲੀਮੈਂਟ ਇੱਕ ਚੋਣਵੀ ਐਲੀਮੈਂਟ ਹੈ। ਅਸੀਂ ਇਸ ਐਲੀਮੈਂਟ ਦੇ minOccurs ਅਤੀਤ ਨੂੰ 0 ਸੈਟ ਕੀਤਾ ਹੈ:

<xs:element name="item" maxOccurs="unbounded">
 <xs:complexType>
  
   <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:element>

ਹੁਣ, ਅਸੀਂ "shiporder" ਐਲੀਮੈਂਟ ਦੇ ਅਟਰੀਬਿਊਟ ਨੂੰ ਘੋਸ਼ਿਤ ਕਰ ਸਕਦੇ ਹਾਂ। ਇਹ ਇੱਕ ਜ਼ਰੂਰੀ ਅਟਰੀਬਿਊਟ ਹੈ ਇਸ ਲਈ ਅਸੀਂ use="required" ਕਰਦੇ ਹਾਂ।

ਟਿੱਪਣੀਆਂ:ਇਸ ਅਟਰੀਬਿਊਟ ਦੀ ਘੋਸ਼ਣਾ ਆਖਰੀ ਵਿੱਚ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ:

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

ਇਹ ਇਸ ਨਾਮ ਵਾਲੀ "shiporder.xsd" schema ਫਾਈਲ ਦੀ ਡਾਕੂਮੈਂਟ ਸੂਚੀ ਹੈ:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
 <xs:complexType>
  
   <xs:element name="orderperson" type="xs:string"/>
   <xs:element name="shipto">
    <xs:complexType>
     
      <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>
   <xs:element name="item" maxOccurs="unbounded">
    <xs:complexType>
     
      <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:element>
  
  <xs:attribute name="orderid" type="xs:string" use="required"/>
 
</xs:element>

Schema ਵੰਡਣ

ਪਹਿਲਾਂ ਦਾ ਵਿਕਸਿਤ ਤਰੀਕਾ ਬਹੁਤ ਅਸਾਨ ਹੈ, ਲੇਕਿਨ ਜਦੋਂ ਦਸਤਾਵੇਜ਼ ਜ਼ਿਆਦਾ ਜ਼ਿਆਦਾ ਜ਼ਿਆਦਾ ਹੁੰਦੇ ਹਨ ਤਾਂ ਪੜ੍ਹਨ ਅਤੇ ਰੱਖ-ਰਖਾਅ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲੀਆਂ ਹੁੰਦੀਆਂ ਹਨ。

ਅਗਲੇ ਵਿਕਸਿਤ ਤਰੀਕਾ ਪਹਿਲਾਂ ਸਾਰੇ ਐਲੀਮੈਂਟ ਅਤੇ ਅਟਰੀਬਿਊਟਾਂ ਦੇ ਵਿਆਖਿਆਨ ਨੂੰ ਕਰਦੇ ਹੋਏ ਅਤੇ ਫਿਰ ref ਅਟਰੀਬਿਊਟ ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਆਧਾਰਿਤ ਹੈ。

ਇਹ ਨਵੇਂ ਤਰੀਕੇ ਨਾਲ ਡਿਜ਼ਾਇਨ ਕੀਤੀ ਗਈ schema ਫਾਈਲ ਹੈ:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
ਸਰਲ ਐਲੀਮੈਂਟ ਦੇ ਵਿਆਖਿਆਨ
<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"/>
ਅਟਰੀਬਿਊਟ ਦੇ ਵਿਆਖਿਆਨ
<xs:attribute name="orderid" type="xs:string"/>
ਮਿਲਟੀਪਲ ਐਲੀਮੈਂਟ ਦੇ ਵਿਆਖਿਆਨ
<xs:element name="shipto">
 <xs:complexType>
  
   <xs:element ref="name"/>
   <xs:element ref="address"/>
   <xs:element ref="city"/>
   <xs:element ref="country"/>
  
 
</xs:element>
<xs:element name="item">
 <xs:complexType>
  
   <xs:element ref="title"/>
   <xs:element ref="note" minOccurs="0"/>
   <xs:element ref="quantity"/>
   <xs:element ref="price"/>
  
 
</xs:element>
<xs:element name="shiporder">
 <xs:complexType>
  
   <xs:element ref="orderperson"/>
   <xs:element ref="shipto"/>
   <xs:element ref="item" maxOccurs="unbounded"/>
  
  <xs:attribute ref="orderid" use="required"/>
 
</xs:element>

ਨਿਰਧਾਰਿਤ ਤਰੀਕੇ (Named Types) ਦੀ ਵਰਤੋਂ ਕਰੋ

ਤੀਜਾ ਡਿਜਾਈਨ ਤਰੀਕਾ ਕਲਾਸ ਜਾਂ ਤਰੀਕੇ ਨਿਰਧਾਰਿਤ ਕਰਦਾ ਹੈ ਤਾਕਿ ਅਸੀਂ ਤੱਤਾਂ ਦੇ ਨਿਰਧਾਰਣ ਨੂੰ ਦੁਹਰਾਉਣ ਦੀ ਸਮਰੱਥਾ ਰੱਖੀਏ। ਵਿਸ਼ੇਸ਼ ਤੌਰ 'ਤੇ: ਸ਼ੁਰੂ ਵਿੱਚ ਸਰਲ ਤੱਤ ਅਤੇ ਕੰਪਲੈਕਸ ਤੱਤਾਂ ਦਾ ਨਾਮ ਕਰੋ ਅਤੇ ਫਿਰ ਤੱਤ ਦੇ type ਪ੍ਰਾਪਤ ਕਰਕੇ ਉਨ੍ਹਾਂ ਦਾ ਸੰਦਰਭ ਦਿਓ。

ਇਹ ਤੀਜੇ ਤਰੀਕੇ ਨਾਲ ਡਿਜਾਈਨ ਕੀਤੇ ਗਏ schema ਫਾਈਲ ("shiporder.xsd") ਹਨ:

<?xml version="1.0" encoding="ISO-8859-1" ?>
<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:element name="name" type="stringtype"/>
  
  
  
 


 
  
  
  
  
 


 
  
  
  
 
 



restriction 元素显示出数据类型源自于 W3C XML Schema 命名空间的数据类型。因此,下面的片也就意味着元素或属性的值必须是字符串类型的值:

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

restriction عناصر کونوالی کجی کیوپر کریگا کیوپر تیپ تیپ. بند آئی پائید آئی تی کیوپر آئی سکا:

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

ਇਹ ਕੋਡ ਇਸ ਪ੍ਰਕਾਰ ਸੁਝਾਵੀ ਹੈ ਕਿ ਐਲੀਮੈਂਟ ਜਾਂ ਗੁਣ ਦਾ ਮੁੱਲ ਸਟਰਿੰਗ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਹ ਲਗਾਤਾਰ ਛੇ ਅੰਕ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ, ਅਤੇ ਇਹ ਅੰਕ 0-9 ਦੇ ਨੰਬਰ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ。