XSD -Schema -Namespace -Probleme
-
14-10-2019 - |
Frage
Wie erwarte ich, dass ein Element einen Namespace mit XSD hat? Zu diesem Zeitpunkt erhalte ich einen Fehler, der sagt: "Ungültiger Inhalt wurde gefunden, beginnend mit Element 'NS: Person'. Einer von '{" ": Person}' wird erwartet."
Wie Sie sehen können, definiere ich das name
Attribut auf der xs:element
: "Person". Wenn ich "NS: Person" als die definiere name
Dann erhalte ich einen Fehler, dass der Name ungültig ist aaarghh.
Was vermisse ich hier?
Dies ist der XSD (Ns.xsd):
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="peoples">
<xs:complexType>
<xs:sequence>
<xs:element name="person"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Dies ist der XML (Peoples.xml):
<?xml version="1.0" encoding="ISO-8859-1"?>
<peoples xmlns:ns="url" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ns.xsd">
<ns:person>
<name>John</name>
</ns:person>
</peoples>
Lösung
Sie müssen das komplette XSD einfügen, um Ihnen zu helfen. Aber aus dem Fehler, den ich sehe und die Tatsache, dass Sie "XSI: NonamePaceSchemalocation" in Ihr XML -Instanzdokument aufgenommen haben, ist das Problem, das ich sehe, dass Sie Ihr Schema mit definiert haben Kein TargetNameSpace angegeben, aber Sie qualifizieren sich Person Element mit einem Namespace -Präfix. Entfernen Sie einfach "NS:" an allen Stellen in Ihrem Instanzdokument und Sie sind alle gut.