لماذا فشل اختبار XML الخاص بي مع مخطط XSD بسيط للغاية؟

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

  •  26-09-2019
  •  | 
  •  

سؤال

أنا مبتدئ قليلاً في مخطط XML. سأكون ممتنًا إذا ساعدني أحدهم في فهم سبب عدم التحقق من صحة XML الخاصة بي مع المخطط:

ها هو مخططي:

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.example.org/testSchema" xmlns="http://www.example.org/testSchema">
  <xs:element name="Employee">
    <xs:complexType>
      <xs:sequence>
        <xs:element name="Name">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="FirstName" />
              <xs:element name="LastName" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
      </xs:sequence>
    </xs:complexType>
  </xs:element>
</xs:schema>

ها هو اختبار XML الخاص بي:

<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
 <Name>
  <FirstName>John</FirstName>
  <LastName>Smith</LastName>
 </Name>
</Employee>

أحصل على خطأ يتبع بواسطة Eclipse XML Editor/Deveritor:

cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.

لم أستطع أن أفهم ما هو الخطأ في هذا المخطط أو XML الخاص بي.

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

المحلول

كل ما عليك فعله هو إضافة elementFormDefault = "مؤهل" وستكون على ما يرام. لفهم هذا السلوك ، اقرأ "هل أنت مؤهل؟" الجزء @ http://msdn.microsoft.com/en-us/library/ms950796.aspx

نصائح أخرى

فقط أضف elementFormDefault = "المؤهلة" إلى مخطط attribues.

 <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"         
       targetNamespace="http://www.example.org/testSchema"
       elementFormDefault="qualified"
       xmlns="http://www.example.org/testSchema">

وسيعمل الأصلي الخاص بك

 <?xml version="1.0" encoding="utf-8"?>
   <Employee xmlns="http://www.example.org/testSchema">
     <Name>
      <FirstName>John</FirstName>
      <LastName>Smith</LastName>
   </Name>
 </Employee>

يبدو أنك تفشل في تحديد كيفية التحقق من صحة FirstName و LastName عناصر؛ إعطاء المواصفات العناصر لهؤلاء type="xsd:string" (أين xsd يجب تعيينها إلى مساحة اسم بيانات مخطط XML ، بالطبع) وينبغي أن يكون كل شيء على ما يرام.

لكنك أفضل حالًا في عدم تعشيش تلك العناصر عميقة جدًا. ضعهم جميعًا على نفس المستوى والاستخدام ref="Name" لربطهم جميعًا معًا بدلاً من ذلك ؛ يجعل مخططك أكثر مرونة وقابلة للاستخدام.

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