جایگزینی عناصر XSD (Element Substitution)
- صفحه قبل XSD <anyAttribute>
- صفحه بعدی مثالهای XSD
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 معتبر مشابه این است (بر اساس اسکیمای بالا):
<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 معتبر باید مشابه این باشد (بر اساس اسکیمای بالا):
<customer> <name>John Smith</name> </customer>
اما مستند زیر دیگر معتبر نیست:
<kunde> <navn>John Smith</navn> </kunde>
از substitutionGroup استفاده کنید
عنصر قابل تعویض باید با عنصر اصلی مشابه باشد یا از عنصر اصلی مشتق شده باشد. اگر نوع عنصر قابل تعویض با نوع عنصر اصلی مشابه باشد، پس شما نیازی به تعیین نوع عنصر قابل تعویض ندارید.
لطفاً توجه داشته باشید که تمام عناصر موجود در substitutionGroup (عناصر اصلی و قابل جایگزینی) باید به عنوان عناصر جهانی اعلام شوند، در غیر این صورت کار نمیکند!
عناصر جهانی (Global Elements) چیست؟
عناصر جهانی به معنای مستقیماً فرزند عنصر "schema" است! عناصر محلی (Local elements) به عناصر درون دیگر عناصر اشاره دارد.
- صفحه قبل XSD <anyAttribute>
- صفحه بعدی مثالهای XSD