2013-03-24 22 views
7

Per Definition:Welchen Effekt hat das Attribut noNamespaceSchemaLocation auf die XML-Analyse?

Das noNamespaceSchemaLocation Attribut verweist auf ein XML-Schema-Dokument, das keinen Ziel-Namensraum hat.

Wie ändert dieses Attribut jemals das Ergebnis der Analyse?

Zum Beispiel, nehmen Sie dieses XML:

<?xml version="1.0"?> 
<name 
    xmlns="http://www.example.com/name" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="http://www.example.com/name schema/schema.xsd" 
    title="Mr."> 
    <first>John</first> 
    <middle>M</middle> 
    <last>Doe</last> 
</name> 

dieses Schema verweisen:

<?xml version="1.0"?> 
<schema xmlns="http://www.w3.org/2001/XMLSchema" 
xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" elementFormDefault="qualified"> 
    <element name="name"> 
    <complexType> 
     <sequence> 
     <element name="first" type="string"/> 
     <element name="middle" type="string"/> 
     <element name="last" type="string"/> 
     </sequence> 
     <attribute name="title" type="string"/> 
    </complexType> 
    </element> 
</schema> 

ich diese Namespace-Deklarationen aus dem Schema entfernt:

xmlns:target="http://www.example.com/name" 
targetNamespace="http://www.example.com/name" 

, ohne auch nur die Verwendung von Attribut 'noNamespaceSchemaLocation' in der referenzierenden XML-Datei, es wurde kein Fehler ausgegeben. Warum brauchen wir überhaupt dieses Attribut?

Antwort

8

Das Attribut hat keine Auswirkungen auf einen XML-Parser. Es Mai beeinflussen das Verhalten eines XML-Schema-Prozessors, wenn entsprechende Optionen festgelegt sind; und es kann in ähnlicher Weise beeinflussen das Verhalten eines Programms, das die Funktionen von XML-Parsing und XML-Schema-Validierung kombiniert. Er teilt einem Schema-Prozessor mit, wo er nach einem Schema suchen soll, das das Dokument beschreibt.

Aber selbst mit einem Schema-Prozessor hat das noNamespaceSchemaLocation Attribut keinen Einfluss auf die Überprüfung eines Dokuments wie Ihres, bei dem sich alle Elemente in einem Namespace befinden.

+0

Danke für die Antwort Michael. Ich nehme an, meine Frage hätte lauten sollen "Welchen Effekt hat das Attribut noNamespaceSchemaLocation auf XML * Validierung *?". Wenn ein Teil meines Dokuments keinen Namespace hat, meinen Sie, dass dies der Zeitpunkt ist, an dem die noNamespaceSchemaLocation-Wirkung eintritt und die überlappenden 'No Namespaces' der Daten und des Schemas behebt? – Jops

+3

Das Attribut weist den Schema-Prozessor an, wo nach einem Schema gesucht werden soll, das zum Überprüfen von Elementen verwendet werden kann, die sich in keinem Namespace befinden. In Ihrem Beispiel gibt es solche Elemente nicht. –

+0

Ah, cool. Danke für die Klärung Michael. Jetzt vollständig verstanden. – Jops

Verwandte Themen