قم بتضمين عناصر في نوع XSD Complex Type بدون عنصر جديد
-
21-09-2019 - |
سؤال
لدي هذا النوع المعقد:
<xsd:complexType name="Identifier">
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="Version" type="xsd:string"/>
</xsd:sequence>
</xsd:complexType>
الآن أريد أن أدرج هذا في نوع معقد آخر وكنت أفعل ذلك مثل هذا:
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="Identifier"/>
<!-- More elements here -->
</xsd:sequence>
</xsd:complexType>
هذا ليس ما أريده حقًا. أرغب في تضمين عناصر نوع المعرف مباشرة في نوع المعقد الثاني دون إنشاء عنصر جديد. على سبيل المثال مجرد القيام بذلك:
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Id" type="xsd:string"/>
<xsd:element name="Version" type="xsd:string"/>
<!-- More elements here -->
</xsd:sequence>
</xsd:complexType>
أتمنى أن يكون هذا منطقيًا.
شكرا مقدما.
المحلول
يمكنك تمديد الأنواع ، مثل هذا:
<xsd:complexType name="MySubType">
<xsd:complexContent>
<xsd:extension base="Identifier">
<xsd:sequence>
<!-- More elements here -->
</xsd:sequence>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
نصائح أخرى
هذا النوع المعقد سوف يحل دائمًا إلى
<Identifier>
<Id>string</Id>
<Version>string</Version>
</Identifier>
إذا كنت لا تريد بنية طفل ، فيمكنك تحديد المعرف والإصدار كعناصر وإشارةهم إلى استخدامها
<xsd:element ref="Id"/>
<xsd:element ref="Version"/>
لاحقا. ولكن بعد ذلك ليس لديك ضمان بحدوثهما
يمكنك أيضًا عمل سمات المعرف والإصدار إلى عنصر المعرف في نوع معقد
حظا سعيدا مايك
لا تنتمي إلى StackOverflow