Ich versuchte zu verstehen, folgen Sie alle (komplizierten) Regeln der XML-Schema-Behandlung, aber ich kann immer noch nicht herausfinden! Mein Problem ist das:XML-Schema-Validierung mit leeren Namespace
- Ich habe eine XSD;
- Ich möchte erstellen und validieren XML-Dateien basierend auf dieser XSD, ohne ein Präfix für Elemente;
- Ich möchte Editoren wie jEdit, Eclipse, etc. Auto-Vervollständigung basierend auf XSD behandeln.
Alle validierende Editoren geben mir jedoch die gleiche Fehlermeldung. Hier
ist eine abgespeckte Version des XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema targetNamespace="http://www.megadix.org/standards/temp.xsd"
xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:jfcm="http://www.megadix.org/standards/temp.xsd"
elementFormDefault="unqualified" attributeFormDefault="unqualified">
<xsd:complexType name="MapsType">
<xsd:sequence>
<xsd:element name="map" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
<xsd:sequence>
<xsd:element name="description" type="xsd:string" minOccurs="0" maxOccurs="1"></xsd:element>
<xsd:element name="concepts" minOccurs="0" maxOccurs="1">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="concept" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:attribute name="name" type="xsd:string" use="required"></xsd:attribute>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:sequence>
</xsd:complexType>
<xsd:element name="maps" type="jfcm:MapsType"></xsd:element>
Wenn ich einen Präfix verwenden, Dateien korrekt validieren und auto-complete:
<?xml version="1.0" encoding="UTF-8"?>
<jfcm:maps xmlns:jfcm="http://www.megadix.org/standards/temp.xsd">
<map name="Test Map">
<concepts>
<concept name="c1" />
<concept name="c2" />
<concept name="c3" />
</concepts>
</map>
Aber wenn ich es entferne:
<?xml version="1.0" encoding="UTF-8"?>
<maps xmlns:jfcm="http://www.megadix.org/standards/temp.xsd">
<map name="Test Map">
<concepts>
<concept name="c1" />
<concept name="c2" />
<concept name="c3" />
</concepts>
</map>
Ich bekomme diese Fehlermeldung:
ungültiger Inhalt gefunden wurde mit dem Element 'Karte' zu starten. Eine von {map} wird erwartet.
Irgendwelche Vorschläge?
Ich bin nicht sicher, ob die angegebene XML gültig ist. Weil Ihr Ziel-Namespace sich auf einen der spezifischen Namespaces beziehen sollte, die für den Kontext definiert sind. – Phani
@Phani, ich kann Ihnen versichern, dass es basierend auf der XSD (na ja, ich musste das Attribut nach der Sequenz verschieben, aber das ist irrelevant für unser Problem hier). Eine Sache, an die Sie denken müssen, ist, dass ein Dokumentelement (oder Root) den Ziel-Namespace der XSD haben muss; alle anderen verschachtelten innerhalb, solange sie lokal definiert sind (wie der Autor tat) nicht; elementFormDefault steuert das; in diesem Fall wäre unqualifiziert. –
Ich sehe Ihren Standpunkt. Danke Peter. – Phani