2012-03-28 6 views
0

Ich habe ein sehr einfaches Problem, das mit einer gegebenen XML-Schemadatei zusammenhängt, die Sie unter meinem Beitrag sehen können. Es ist von einer Prüfung, die ich in einer Woche schreiben muss, und es ist eine Frage über das wohlgeformte Schema.Wissen Sie nicht, warum XML-Schema nicht wohlgeformt ist?

Der Fehler ist bereits gelb markiert und ich habe den Hinweis, dass es um Namespaces geht, aber am Ende habe ich keine Ahnung, wie das Problem gelöst werden soll. Mein erster Gedanke war, dass die Typdefinition Type="Book" ein Präfix wie Type="urn:Book" benötigt, aber ich bin mir überhaupt nicht sicher.

Ich danke Ihnen für jeden Rat, der mir helfen kann, meinen Mangel an Wissen in diesem Fall zu beheben.

enter image description here

Antwort

1

Das liegt daran, dass Sie angeben, dass Book im targetNamespace Attribut urn:schemaS Namespace ist. Damit dies funktioniert, müssen Sie ein Namespeace-Präfix für urn:schemaS definieren und es in type="nsPrefix:Book" qualifizieren.

Read this tutorial

+0

Vielen Dank für diese schnelle Antwort, es hat mir sehr geholfen und ich denke, ich habe eine Idee über die Funktion von Namespaces, besonders in diesem Fall :) – Matthias

+0

@Matthias dann akzeptieren Sie dies als die richtige Antwort –

0

Wenn Sie ein benannte complexType sein Name ein qualifiziert man erklären ist, mit dem Ziel-Namensraum zugeordnet ist - so was erklären Sie, eine Art Book im urn:schema5 Namespace ist.

Wenn Sie den Typ referenzieren, müssen Sie seinen qualifizierten Namen angeben, und das Schema verwendet standardmäßig nicht den Zielnamespace, sondern verwendet die normalen XML-Namespacedeklarationen. Da Sie keine haben, versuchen Sie, einen Typ Book im Standardnamespace ('') zu verwenden, der nicht existiert.

Sie müssen entweder einen Namespace-Deklaration hinzufügen:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns:schema5="urn:schema5" 
    targetNamespace="urn:schema5" 
    elementFormDefault="qualified"> 

und dann verwenden,

<xs:element name="book" type="schema5:Book" maxOccurs="3"/> 

oder (meine bevorzugte Wahl) erklären Ziel Sie Namespace als Standard ein:

<xs:schema 
    xmlns:xs="http://www.w3.org/2001/XMLSchema" 
    xmlns="urn:schema5" 
    targetNamespace="urn:schema5" 
    elementFormDefault="qualified"> 

und dann müssen Sie nichts anderes tun.