قم بتضمين عناصر في نوع XSD Complex Type بدون عنصر جديد

StackOverflow https://stackoverflow.com/questions/1577665

  •  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"/>

لاحقا. ولكن بعد ذلك ليس لديك ضمان بحدوثهما

يمكنك أيضًا عمل سمات المعرف والإصدار إلى عنصر المعرف في نوع معقد

حظا سعيدا مايك

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top