Я - немного новичок в схеме 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.
все, что вам нужно сделать, это добавить elementFormDefault = "qualified", и с вами все будет в порядке. чтобы понять это поведение, прочтите «Вы квалифицированы?» раздел @ http://msdn.microsoft.com/en-us/library/ms950796.aspx
Просто добавьте 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>
Похоже, вы не можете указать, как проверять элементы FirstName
и LastName
; дайте спецификации элементов для этих type = "xsd: string"
(где xsd
, конечно, необходимо сопоставить с пространством имен XML Schema Datatypes), и все должно быть в порядке.
Но вам лучше не вкладывать эти элементы так глубоко. Поместите их все на один уровень и используйте ref = "Name"
, чтобы вместо этого связать их все вместе; это делает вашу схему более гибкой и удобной.