سؤال

أنا فقط أتعلم XML/XSD وأكافح مع تنفيذ SCHEMA XML الذي يصمم بنية المجلد. ما كان يدور في ذهني هو تحديد مجمع للمجلد الذي يمكن أن يكون له مثيلات مجلد إضافية تمثل المجلدات الفرعية. باستخدام التحقق من مخطط XSD هنا يعود دائمًا إلى أن المخطط غير صالح.

حاولت تحديد Complextype في المقدمة ثم باستخدام المرجع الكلمة الرئيسية للمجلدات الفرعية:

<xs:complexType name="tFolder">
 <xs:sequence>
  <xs:element name="Path" type="tFolderType" msdata:Ordinal="0" />                    
  <xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />
  <xs:element name="File" nillable="true" minOccurs="0" maxOccurs="unbounded">
    <xs:complexType>
      <xs:simpleContent msdata:ColumnName="File_Text" msdata:Ordinal="0">
        <xs:extension base="xs:string">
        </xs:extension>
      </xs:simpleContent>
    </xs:complexType>
  </xs:element>                              
 </xs:sequence>
<xs:attribute name="Type" type="tFolderType" />

أما العنصر نفسه:

<xs:element name="Folder" type="tFolder" />

الخطأ الذي تم إرجاعه بواسطة المدقق هو:

"لا يمكن حل اسم" المجلد "إلى مكون" إعلان العنصر "(N)".

ويحدث الخطأ في السطر

<xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />

يؤدي تحديد complextype داخل العنصر نفسه إلى نفس الخطأ بالضبط:

<xs:element name="Folder">
  <xs:complexType>
    <xs:sequence>
      <xs:element name="Path" type="tFolderType" msdata:Ordinal="0" />
      <xs:element ref="Folder" minOccurs="0" maxOccurs="unbounded" />                          
      <xs:element name="File" nillable="true" minOccurs="0" maxOccurs="unbounded">
        <xs:complexType>
          <xs:simpleContent msdata:ColumnName="File_Text" msdata:Ordinal="0">
            <xs:extension base="xs:string">
            </xs:extension>
          </xs:simpleContent>
        </xs:complexType>
      </xs:element>                              
    </xs:sequence>
    <xs:attribute name="Type" type="tFolderType" />
  </xs:complexType>
</xs:element>

ما قرأته ، هذا النوع من العودية يجب أن يعمل باستخدامه المرجع.

هل يمكن لأي شخص أن يخبرني بما فعلته خطأ؟ ربما يكون مدقق XSD مجرد خاطئ؟ إذا كان الأمر كذلك ، فهل يعرف أحد بديلاً أفضل؟ لقد حاولت استخدام واحد من W3.org أيضًا ، لكن يبدو أنه تم وضعه في وضع عدم الاتصال ...

هل كانت مفيدة؟

المحلول

أعتقد أن هذه هي الطريقة للقيام بذلك (لا تستخدم المرجع):

<element name="test" type="tns:TestType"></element>

<complexType name="TestType">
    <sequence>
        <element name="test" type="tns:TestType"></element>
    </sequence>
</complexType>
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top