أحدث البرامج التعليمية وتطوير الشبكة
 

XSD عنصر تبديل


مع مخططات XML، يمكن أن عنصرا واحدا بديلا عنصر آخر.


عنصر تبديل

دعنا نقول أن لدينا المستخدمين من اثنين من مختلف دول: إنجلترا والنرويج. نود القدرة على السماح للمستخدم اختيار ما إذا كان هو أو هي ترغب في استخدام أسماء العناصر النرويجية أو أسماء العناصر اللغة الإنجليزية في وثيقة XML.

لحل هذه المشكلة، ونحن يمكن تحديد substitutionGroup في مخطط XML. أولا، فإننا نعلن عنصر رئيس وثم نعلن العناصر الأخرى التي تنص على أن تكون للإحلال للعنصر الرأس.

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

في المثال أعلاه، "name" العنصر هو العنصر الرئيسي و "navn" العنصر إحلال ل "name" .

انظروا الى هذا جزء من مخطط XML:

<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 صالحة (according to the schema above) قد تبدو هذه:

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

أو من هذا القبيل:

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

حجب العنصر تبديل

لمنع عناصر أخرى من استبداله عنصر محدد، استخدم block السمة:

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

انظروا الى هذا جزء من مخطط XML:

<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 صالحة (according to the schema above) تبدو مثل هذا:

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

ولكن هذا لم يعد صالحا:

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

باستخدام substitutionGroup

يجب أن يكون نوع من العناصر للاستبدال نفس، أو المتأتي من نوع العنصر الرأس. إذا كان نوع العنصر إحلال هو نفس نوع العنصر الرئيسي سوف لا يكون لديك لتحديد نوع العنصر للإحلال.

لاحظ أن جميع العناصر في substitutionGroup (العنصر الرأس وعناصر للاستبدال) يجب إعلان كعناصر العالمية، وإلا فإنه لن ينجح!


ما هي عناصر العالمية؟

العناصر العالمية هي العناصر التي هي الأطفال الفوري عن "schema" العنصر! العناصر المحلية هي عناصر متداخلة ضمن عناصر أخرى.