Perchè il mio test xml sta venendo a mancare con molto semplice schema XSD?
-
26-09-2019 - |
Domanda
Sono un novizio po 'di schema XML. Le sarei grato se qualcuno aiutarmi a capire il motivo per cui il mio XML non viene convalidato con lo schema:
Ecco il mio 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>
Questa è la mia prova xml:
<?xml version="1.0" encoding="UTF-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
sto ottenendo seguente errore da Eclipse editor XML / validator:
cvc-complex-type.2.4.a: Invalid content was found starting with element 'Name'. One of '{Name}' is expected.
Non riusciva a capire cosa c'è di sbagliato in questo schema o il mio xml.
Soluzione
tutto u deve fare è aggiungere elementFormDefault = "qualificato" e u andrà bene. per capire questo comportamento, leggere "Sei qualificato?" sezione @ http://msdn.microsoft.com/en-us/library/ ms950796.aspx
Altri suggerimenti
È sufficiente aggiungere l'elementFormDefault = "qualificato" ai attribues schema.
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://www.example.org/testSchema"
elementFormDefault="qualified"
xmlns="http://www.example.org/testSchema">
E il vostro lavoro sarà originale
<?xml version="1.0" encoding="utf-8"?>
<Employee xmlns="http://www.example.org/testSchema">
<Name>
<FirstName>John</FirstName>
<LastName>Smith</LastName>
</Name>
</Employee>
Sembra che tu sia non riuscendo a specificare come convalidare gli elementi FirstName
e LastName
; dare le specifiche degli elementi per coloro type="xsd:string"
(in cui i bisogni xsd
da mappare al namespace XML Schema Datatypes, ovviamente) e tutti dovrebbero essere bene.
Ma si è meglio non nidificazione quegli elementi così profondo. Metterli tutti allo stesso livello e l'uso ref="Name"
per collegarli tutti insieme, invece; rende lo schema molto più flessibile e utilizzabile.