XSD 元素替换(Element Substitution)

XML شیئم کے ذریعے، ایک عنصر دوسرے عنصر کو بدل سکتا ہے。

عنصر بدل کاری

مثال دیں: ہمارے استعمال کنندگان برطانیہ اور ناروے سے آتے ہیں۔ ہم چاہتے ہیں کہ استعمال کنندگان کو مواقع فراہم ہو کہ وہ XML دستاویز میں ناروئی زبان کے عنصر نام یا انگریزی زبان کے عنصر نام کو استعمال کرسکتے ہیں یا نہیں。

اس مسئلہ کو حل کرنے کے لئے، ہم XML شیئم میں ایک substitutionGroupپہلے، ہم اپنے اہم عنصر کو اعلان کرتے ہیں، تب ہم دوسرے عنصر کو اعلان کریں گے، جو ان عنصر کو اعلان کرسکتے ہیں کہ وہ اپنے اہم عنصر کو بدل سکتے ہیں。

<xs:element name="name" type="xs:string"/>
<xs:element name="navn"}} substitutionGroup="name"/>

ਉੱਪਰੋਕਤ ਉਦਾਹਰਣ ਵਿੱਚ, "name" ਇਲੈਕਟਰਨ ਮੁੱਖ ਇਲੈਕਟਰਨ ਹੈ ਅਤੇ "navn" ਇਲੈਕਟਰਨ "name" ਇਲੈਕਟਰਨ ਦੀ ਥਾਂ ਨੂੰ ਲੈ ਸਕਦਾ ਹੈ。

ਕੋਈ XML schema ਦੀ ਤਿਆਰੀ ਦੇਖੋ:

<xs:element name="name" type="xs:string"/>
<xs:element name="navn" substitutionGroup="name"/>
<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="customer" type="custinfo"/>
<xs:element name="kunde" substitutionGroup="customer"/>

ਨਿਯਮਤ XML ਦਸਤਾਵੇਜ਼ ਇਸ ਤਰ੍ਹਾਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ (ਉੱਪਰੋਕਤ schema ਦੇ ਅਨੁਸਾਰ):

<customer>
  <name>John Smith</name>
</customer>

ਜਾਂ ਇਸ ਤਰ੍ਹਾਂ ਵੀ:

<kunde>
  <navn>John Smith</navn>
</kunde>

ਇਲੈਕਟਰਨ ਦੀ ਵਿਸਥਾਪਨ ਰੋਕੋ

ਕਿਸੇ ਵੀ ਇਲੈਕਟਰਨ ਨੂੰ ਹੋਰ ਇਲੈਕਟਰਨ ਦੁਆਰਾ ਵਿਸਥਾਪਤ ਨਾ ਕਰਨ ਲਈ block ਅਤਰੀਬ ਦਾ ਉਪਯੋਗ ਕਰੋ:

<xs:element name="name" type="xs:string" block="substitution"/>

ਕੋਈ XML schema ਦੀ ਤਿਆਰੀ ਦੇਖੋ:

<xs:element name="name" type="xs:string" block="substitution"/>
<xs:element name="navn" substitutionGroup="name"/>
<xs:complexType name="custinfo">
  <xs:sequence>
    <xs:element ref="name"/>
  </xs:sequence>
</xs:complexType>
<xs:element name="customer" type="custinfo" block="substitution"/>
<xs:element name="kunde" substitutionGroup="customer"/>

ਨਿਯਮਤ XML ਦਸਤਾਵੇਜ਼ ਇਸ ਤਰ੍ਹਾਂ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ (ਉੱਪਰੋਕਤ schema ਦੇ ਅਨੁਸਾਰ):

<customer>
  <name>John Smith</name>
</customer>

ਪਰ ਹੇਠ ਲਿਖੇ ਦਸਤਾਵੇਜ਼ ਨਿਯਮਤ ਨਹੀਂ ਹੈ:

<kunde>
  <navn>John Smith</navn>
</kunde>

substitutionGroup ਦਾ ਉਪਯੋਗ ਕਰੋ

ਵਿਸਥਾਪਨ ਕਰਨ ਵਾਲੇ ਇਲੈਕਟਰਨ ਦੀ ਕਿਸਮ ਮੁੱਖ ਇਲੈਕਟਰਨ ਦੀ ਨਾਲ ਇੱਕ ਹੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ ਜਾਂ ਮੁੱਖ ਇਲੈਕਟਰਨ ਤੋਂ ਵੱਡੀ ਹੋਣੀ ਚਾਹੀਦੀ ਹੈ।ਜੇਕਰ ਵਿਸਥਾਪਨ ਕਰਨ ਵਾਲੇ ਇਲੈਕਟਰਨ ਦੀ ਕਿਸਮ ਮੁੱਖ ਇਲੈਕਟਰਨ ਦੀ ਨਾਲ ਇੱਕ ਹੀ ਹੈ ਤਾਂ ਤੁਸੀਂ ਵਿਸਥਾਪਨ ਕਰਨ ਵਾਲੇ ਇਲੈਕਟਰਨ ਦੀ ਕਿਸਮ ਨਾਲ ਨਿਰਦੇਸ਼ ਨਹੀਂ ਦੇਣਾ ਚਾਹੀਦਾ।

ਧਿਆਨ ਰੱਖੋ ਕਿ substitutionGroup ਵਿੱਚ ਸਾਰੇ ਏਜ਼ੇਂਟ (ਮੁੱਖ ਏਜ਼ੇਂਟ ਅਤੇ ਬਦਲਣਯੋਗ ਏਜ਼ੇਂਟ) ਨੂੰ ਗਲੋਬਲ ਏਜ਼ੇਂਟ ਦੇ ਤੌਰ 'ਤੇ ਘੋਸ਼ਿਤ ਕੀਤਾ ਜਾਣਾ ਚਾਹੀਦਾ ਹੈ ਨਹੀਂ ਤਾਂ ਇਹ ਕੰਮ ਨਹੀਂ ਕਰੇਗਾ!

什么是全局元素(Global Elements)?

全局元素指 "schema" 元素的直接子元素!本地元素(Local elements)指嵌套在其他元素中的元素。