XSD: Wie importiere ich einen Datentyp von einem anderen XSD?
-
01-10-2019 - |
Frage
Ich habe folgendes Start eines XSD:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
xmlns:no="http://www.sychophants.com">
<xs:import namespace="http://www.sychophants.com" schemaLocation="current_obs.xsd"/>
... und dann einige andere Definitionen ...
<xs:element name="noInDatPletd" ref="no:in_dat"/>
Wo in_dat in einem Schema von einer anderen Organisation geschrieben existiert. Was ich will, im Wesentlichen tun, um uns ein Schema erstellen, die ein Element des in_dat Typs enthalten, die in der anderen ogranization des XSD definiert ist.
Bin ich auch nur annähernd diese korrekt zu haben? Ich bin ziemlich neu in XML.
Ich erhalte
http://location_of_my_xsd/temp.xsd:79:9: Invalid: Undefined element
no{http://www.sychophants.com}:in_dat referenced from content model
http://www.w3.org/2001/03/webdata/ XSV , das ein Schema-Validator.
Danke.
edit: Dank der zwei von Ihnen, die geantwortet. Das Problem scheint zu sein, dass die andere Organisation kein Attribut target in ihrem Schema definiert hat. Das Ergebnis ist, dass ich nicht den Namespace in mein Schema importieren kann, was bedeutet, dass ich nicht die Art vorgesehen nutzen kann.
Ich hatte zu kopieren / fügen Sie den Code, das ist, was ich vermeiden wollte ... aber man kann nicht alles, was Sie wollen, ich denke.
Lösung
Ich sehe nur einen offensichtlichen Fehler: Sie ref="no:in_dat"
verwenden, um einen Typ für die Referenzierung. Sie sollten type="no:in_dat"
dort verwenden. ref
würde verweisen auf ein globales Element (und sollte nicht zusammen mit dem verwendet werden
name
Attribut).
Abgesehen davon sind vergangen Sie das externe Schema Validator neben Ihrem eigenen Schema? Es ist natürlich notwendig, um Validieren mit Ihrem Schema.
Andere Tipps
Neben dem Ändern ref = type = , Ihr Schema Definition Aussehen korrigieren. Von der Fehlermeldung, vermute ich, dass das Schema-Validator laden nicht in der Lage ist, die current_obs.xsd aus dem schema vorgesehen, der Sinn machen würde. Der Prüfer hätte keine Möglichkeit, zu prüfen, ob es eine Art in_dat , da es nicht importieren konnte das Schema genannt wird.