Почему мой тест xml перестал работать с очень простой Схемой XSD?

Я - немного новичок в схеме 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>

Я получаю следующую ошибку XML-редактором Eclipse / блок проверки допустимости:

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

Я не мог понять что не так с этой схемой или моим xml.

1
задан Donal Fellows 13 May 2010 в 15:36
поделиться

3 ответа

все, что вам нужно сделать, это добавить elementFormDefault = "qualified", и с вами все будет в порядке. чтобы понять это поведение, прочтите «Вы квалифицированы?» раздел @ http://msdn.microsoft.com/en-us/library/ms950796.aspx

1
ответ дан 3 September 2019 в 00:33
поделиться

Просто добавьте elementFormDefault = "квалифицированный" к атрибутам схемы.

 <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>
1
ответ дан 3 September 2019 в 00:33
поделиться

Похоже, вы не можете указать, как проверять элементы FirstName и LastName ; дайте спецификации элементов для этих type = "xsd: string" (где xsd , конечно, необходимо сопоставить с пространством имен XML Schema Datatypes), и все должно быть в порядке.

Но вам лучше не вкладывать эти элементы так глубоко. Поместите их все на один уровень и используйте ref = "Name" , чтобы вместо этого связать их все вместе; это делает вашу схему более гибкой и удобной.

0
ответ дан 3 September 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: