Warum mein Test xml ist mit sehr einfachen XSD versagt?
-
26-09-2019 - |
Frage
Ich bin ein bisschen Neuling in XML-Schema. Ich wäre dankbar, wenn jemand mir helfen zu verstehen, warum meine xml ist nicht mit dem Schema validiert werden:
Hier ist mein Schema:
<?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>
Hier ist mein Test xml:
<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
Ich erhalte folgende Fehler von Eclipse-XML-Editor / Validator:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.
Ich konnte nicht verstehen, was mit diesem Schema oder meinem xml falsch ist.
Lösung
alle u tun müssen, ist ElementFormDefault- add = „qualifiziert“ und u wird in Ordnung sein. dieses Verhalten zu verstehen, lesen Sie „Sind Sie qualifiziert?“ Abschnitt @ http://msdn.microsoft.com/en-us/library/ ms950796.aspx
Andere Tipps
Fügen Sie einfach die ElementFormDefault- = "qualifiziert", um das Schema 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">
Und Ihre ursprüngliche Willen Arbeit
<?xml version="1.0" encoding="utf-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
Sieht aus wie Sie andernfalls angeben, wie die FirstName
und LastName
Elemente zu validieren; gibt die Elementdaten für jene type="xsd:string"
(wo xsd
Anforderungen an den XML-Schema-Datentypen-Namespace zugeordnet werden, natürlich) und es soll alles gut sein.
Aber Sie sind besser dran, nicht nisten so tief diese Elemente. Setzen Sie sie alle auf dem gleichen Niveau und die Verwendung ref="Name"
sie alle zusammen, anstatt zu verbinden; es macht Ihr Schema viel flexibler und verwendet werden.