XML-Schema: Verwendung von Attribut-definition in complexType
Ich habe einige Probleme mit der XML-Validierung mittels SAX-parser. Hier ist ein einfaches XML-Schema, das ich hier das problem:
<?xml version="1.0"?>
<xs:schema targetNamespace="urn:test"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified"
xmlns="urn:test">
<xs:element name="root">
<xs:complexType>
<xs:sequence>
<xs:element name="content" type="ContentType"
maxOccurs="unbounded" />
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:complexType name="ContentType">
<xs:simpleContent>
<xs:extension base="xs:string">
<xs:attribute ref="title" use="required" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:attribute name="title" type="xs:string" />
</xs:schema>
Und hier ist eine ziemlich einfache XML-Datei, welche meiner Meinung nach das gültig sein sollte, in Bezug auf meine schema:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<root xmlns="urn:test">
<content title="Title">
Content comes here...
</content>
</root>
Das interessante an der Sache ist, dass wenn ich versuche zu Parsen dieser XML-Datei, erhalte ich die folgende überprüfungsfehler:
cvc-complex-type.3.2.2: Attribut 'title' wird nicht erscheinen darf in element 'content'.
Aber wenn ich entfernen Sie die Titel Attribut des Inhalt element aus der XML-Datei, die ich noch erhalten Validierungs-Fehler:
cvc-complex-type.4: Attribut "Titel" muss auf element 'content'.
Ich habe keine Ahnung, was das problem ist. Natürlich, dies ist nur ein einfaches Beispiel zu präsentieren, das problem. Ich würde gerne verstehen, die Ursache für dieses Verhalten. Es wäre auch schön, um eine Lösung zu finden. Ich bin mir nicht sicher, ob mein Java-code tun, der Validierung ist in diesem Fall nicht wichtig, ich poste es später, wenn es notwendig ist.
Jegliche Hilfe würde sehr geschätzt werden.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der globalen Deklaration der
title
- Attribut legt das Attribut in der Ziel-namespaceurn:test
. Das bedeutet auch: Sie muss sich qualifizieren, den Verweis auf das Attribut, sowohl im schema und im Dokument. Standardmäßig unqualifizierte Attribute ohne namespace.und
Diese ganze Sache ist sehr subtil und wenn ich versuche, die zur Validierung der ursprünglichen Instanz-Dokument in ecplise ich bekomme zwei sehr verwirrenden Fehler:
title
Attribut nicht erscheinen auf die content-element. Dies bezieht sich auf die unqualifizierte Verwendung des Attributs undtitle
element muss erscheinen auf die content-element. Dies bezieht sich auf die fehlende qualifiziertetest:title
Attribut.Zugegeben, die Fehlermeldung könnte ein bisschen mehr Kontext-Informationen.