XSD عنصر تبديل
باستخدام مخططات XML ، يمكن لعنصر أن يحل محل عنصر آخر.
استبدال العنصر
لنفترض أن لدينا مستخدمين من بلدين مختلفين: إنجلترا والنرويج. نود القدرة على السماح للمستخدم باختيار ما إذا كان يرغب في استخدام أسماء العناصر النرويجية أو أسماء العناصر الإنجليزية في مستند XML.
لحل هذه المشكلة ، يمكننا تحديد مجموعة replace في مخطط 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 صالحًا (وفقًا للمخطط أعلاه) كما يلي:
<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 صالحًا (وفقًا للمخطط أعلاه) كما يلي:
<customer>
<name>John Smith</name>
</customer>
ولكن هذا لم يعد صالحًا:
<kunde>
<navn>John Smith</navn>
</kunde>
باستخدام مجموعة التعويض
يجب أن يكون نوع العناصر القابلة للاستبدال مماثلاً لنوع عنصر الرأس أو مشتقًا منه. إذا كان نوع العنصر القابل للاستبدال هو نفس نوع العنصر الرئيسي ، فلن تضطر إلى تحديد نوع العنصر القابل للاستبدال.
لاحظ أنه يجب الإعلان عن جميع العناصر في مجموعة الاستبدال (عنصر الرأس والعناصر القابلة للاستبدال) كعناصر عالمية ، وإلا فلن تعمل!
ما هي العناصر العالمية؟
العناصر العالمية هي عناصر فرعية مباشرة لعنصر "المخطط"! العناصر المحلية هي عناصر متداخلة في عناصر أخرى.