webentwicklung-frage-antwort-db.com.de

Wie kann ich eine lokale XML-Schemadatei korrekt referenzieren?

Ich habe dieses Problem mit dem Verweisen auf mein XML-Schema in einer XML-Datei.

Ich habe meine XSD in diesem Pfad:

C:\environment\workspace\maven-ws\ProjectXmlSchema\email.xsd

Aber wenn ich in meiner XML-Datei versuche, das Schema wie folgt zu finden, wird die XSD nicht gefunden:

<?xml version="1.0" encoding="UTF-8" ?>
    <email xmlns="http://www.w3schools.com"
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
           xsi:schemaLocation="http://www.w3schools.com
                 file://C://environment//workspace//maven-ws//ProjextXmlSchema//email.xsd">

Die XSD kann nur gefunden werden, wenn sie sich im selben Ordner befindet:

           xsi:schemaLocation="http://www.w3schools.com email.xsd"

Die Frage ist also: Wie muss der Pfad aussehen, damit die XSD gefunden wird, wenn sich die XML-Datei nicht im selben Ordner wie die XSD-Datei befindet?

Das Beispiel, das ich verwendet habe, war übrigens von MSDN : Sie behaupten, es sollte so funktionieren, wie ich es versucht habe. Aber das tut es nicht.

45
Arturas M

Fügen Sie nach file:// Einen weiteren Schrägstrich in den Wert von xsi:schemaLocation Ein. (Sie haben zwei; Sie brauchen drei. Stellen Sie sich protocol://Host/path Vor, wobei protocol'file' Und Host hier leer sind, was drei Schrägstriche in Folge ergibt.) Sie kann auch die doppelten Schrägstriche entlang des path beseitigen. Ich glaube, dass die doppelten Schrägstriche bei Dateisystemen helfen, die Leerzeichen in Datei- und Verzeichnisnamen zulassen, aber Sie haben diese Komplikation bei der Pfadbenennung mit Bedacht vermieden.

xsi:schemaLocation="http://www.w3schools.com file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd"

Funktioniert immer noch nicht? Ich schlage vor, dass Sie sorgfältig kopieren Sie die vollständige Dateispezifikation für die XSD in die Adressleiste von Chrome oder Firefox:

file:///C:/environment/workspace/maven-ws/ProjextXmlSchema/email.xsd

Wenn die XSD nicht im Browser angezeigt wird, löschen Sie alle bis auf die letzte Komponente des Pfads (email.xsd) und prüfen Sie, ob Sie die übergeordnete Komponente nicht anzeigen können Verzeichnis. Gehen Sie auf diese Weise die Verzeichnisstruktur entlang, bis Sie feststellen, wo der Pfad von der Realität Ihres lokalen Dateisystems abweicht.

Wenn das XSD funktioniert im Browser angezeigt wird, geben Sie an, welchen XML-Prozessor Sie verwenden, und seien Sie bereit zu hören, dass es defekt ist oder dass Sie eine Einschränkung umgehen müssen . Ich kann Ihnen sagen, dass das oben genannte Update mit meinem Xerces-J-basierten Validator funktioniert.

41
kjhughes

Vielleicht hilft es, zu überprüfen, ob der Pfad zur xsd-Datei keine "seltsamen" Zeichen wie "é" oder ähnliches enthält: Ich hatte das gleiche Problem, aber als ich zu einem Pfad ohne "é" wechselte, verschwand der Fehler.

3
gamoz