Frage

Es ist einmal hatte ich eine gültige Doctype und gültige XML. Ich legte die ehemaligen oben auf dem letzteren, CNTRL-s'd und siehe da: alles war wie alle sein sollten. Heute habe ich ein gültiges Schema (custom für meine nach wie vor gültige XML gebaut). Ich versuchte, meinen gleichen altbewährten Ansatz -. Aber leider kein Erfolg

ich verschiedene Fehler mit jedem unterschiedlichen Validator ich verwenden und noch neue Fehler von Browsern Ich gebe es zu (aber das macht Sinn). Also ich bin nicht sicher, was ich soll sehr hilfreich sein, geben. Validome sagt:

  

Kann nicht Erklärung Element finden 'xs: schema'.

und

  

Das Markup in dem Dokument das Stammelement folgende müssen gut ausgebildet sind.

(aber es ist!)

Wenn es nützlich sein, würde das XML und Schema zu haben, können Sie zögern Sie nicht, zu fragen, ich dachte nur, da sie beide W3 gültig und langwierig sind, versuche ich sie verlassen würde aus zunaechst. Alles, was ich tue, ist das Schema auf das XML setzen und sie durch den Prüfer / Browser gesendet wird.

Danke!

War es hilfreich?

Lösung

@Nona Ein Schema ist ein wohlgeformtes Dokument und so ist die Instanz. Wenn jedoch Sie sie das Ergebnis verketten ist nicht mehr wohlgeformt ist.

Wenn das, was Sie haben, ist:

<xs:schema ...>...</xs:schema>
<myxml ...>...</myxml>

Diese nicht wohlgeformt (kein einziges Wurzelelement)

Der Grund, warum der DTD Ansatz unterscheidet, ist, dass die interne Teilmenge speziell auf das Wurzelelement vorangestellt werden darf. Also:

<DOCTYPE myxml [
... my DTD ...
]>
<myxml ...>...</myxml>

ist gut ausgebildet ist.

Leider ist es nicht ganz trivial, ein Schema mit einer Instanz zu verknüpfen. Sie können bei xsi:schema-location suchen.

UPDATE Leider wird die Antwort auf die Software-Framework ab, die Sie verwenden. AFAIK gibt es keine Möglichkeit, ein Dokument der Verpackung und ein Schema, so dass jede Software akzeptieren und zu validieren versuchen. Aus diesem Grunde Schemata sind viel mehr Aufwand als DTDs.

Hier ist eine einfache Seite, wo Sie die beiden Dokumente und Test einreichen können.

Alles darüber hinaus kann eine Kenntnis der Software benötigen. Es wird verschiedene Ansätze werden je nachdem, ob Sie Oracle, Microsoft, etc. Dies durch den Aufruf von Methoden durchgeführt werden, um das Dokument zu laden, das Schema zu laden und dann zu validieren, oder Eigenschaften festlegen (wie in Xerces erfolgen).

Die Antwort kann davon abhängen, warum Sie dies tun. Wenn Sie Dokumente an den Eigentümer des Schemas einreichen dann werden sie probbaly ein Validierungssystem. Wenn Sie valiadte gegen jemand anderes Schema haben, dann müssen Sie schemavalidation Software und führen diese zu erhalten. Sind Sie auf MS oder Unix / Java?

MEHR UPDATE Vorschlagen Was ist der beste Weg, um Validate eine XML-Datei gegen eine XSD-Datei? Wie sie sagen, es gibt keinen ultra-einfachen Ansatz.

Andere Tipps

Nur ein Stich in der Dunkelheit, aber haben Sie die XML-Schema Namespacepräfix auf dem Root-Elemente deklariert? Es ist xmlns: xs = "http://www.w3.org/2001/XMLSchema". Wenn ein Namespace-Präfix nicht auf einen Namespace-Namen gebunden ist, dann ist das Dokument ungültig.

Auf die Gefahr der Offensichtliche, möchten Sie vielleicht Gründe zu prüfen, warum die Erklärung des Elements xs: schema nicht durch den Prüfer zu finden sind.

Der zweite Fehler deutet darauf hin, dass es eine spitze Klammer irgendwo fehlt, oder dass es einige Elemente, die nicht richtig verschachtelt sind.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top