Wie um anzuzeigen, dass ein xml-schema benötigt schema 1.1 features?
Ist, wenn ich eine XML-Schema benötigt schema 1.1 features (vor allem subtile, wie das entfernen eines optionalen element in der Restriktion eines Basistyps), was ist der beste Weg, um zu zeigen, dass dieses schema nicht verwendet werden sollte, mit einem Prozessor, der nur versteht, version 1.0?
In einem XSLT-stylesheet-Datei, es ist möglich, um anzuzeigen, die version der XSLT-Spezifikation, die verwendet wird, mit einem version
Attribut.
Aber in eine XSD-Datei, die version
- Attribut nicht in diesem Sinne - es ist eine frei-form-Attribut, das sagt etwas über die version des Schemas, nicht über die version der Spezifikation, die verwendet wird.
Ist und es erforderlich label ein schema, das verwendet 1.1 features?
Ich habe eine komplexe Reihe von Schemata mit der FPML 5.5 Spezifikation und einige benutzerdefinierte schemas, und es kann nicht überprüft werden mit einigen schema-validators, aber ich bin mir nicht sicher, ob das ist, weil der validator Fehler hat oder weil das schema ist dezent mit dem xml-schema 1.1 features.
Du musst angemeldet sein, um einen Kommentar abzugeben.
In diesem Punkt in der Zeit, dieses Problem ist nicht so einfach zu beheben; dies ist, weil die meisten XSD-Prozessoren 1.0 und die schema-Versionierung eingeführt, die in XSD 1.1 Spezifikation können nicht rückwärts. Um mehr darüber zu erfahren (im Allgemeinen) haben einen Blick auf Die Versionierung Von Schemas Namepsace, und die Beispiele enthalten im Abschnitt 4.2.2 Bedingte Aufnahme.
Könnten Sie implementieren Ihre eigenen pre-processing-Lösung, die am wenigsten Hilfe bei der Auswahl der passenden XSD-Prozessor mit so etwas wie dieses:
Diese Weise zumindest Sie ' ll werden mithilfe einer XSD 1.1 gebilligt Ansatz zur Versionierung; es kommt auch mit einem processing-Modell. Für bestimmte Aufgaben, ist es relativ einfach zu bauen ist ein pre-Prozessor, der mindestens mit der entsprechenden Auswahl der XSD-Prozessor (1.0 oder 1.1) . Um einfacher in einer geschlossenen Umgebung, Sie können auch wählen, eine Konvention, wo man markiert die ganze
xsd:schema
mit vc:minVersion="1.1" - im Grunde, was Sie zu haben scheinen wollte, um mit zu beginnen.Bezug auf deinen letzten Absatz, die Wahl des XSD-Prozessor hat, geltend zu machen, anstatt stillschweigend. Dies ist, weil XSD 1.1 können für Konstrukte, die nicht im XSD 1.0 (z.B. ein
all
compositor-haltige Partikel mit max auftreten, die größer als 1)... so, es sei denn, man macht eine Vorherige Entscheidung re: der Prozessor zu verwenden, der XSD-möglicherweise nicht oder ungültig. In der Erwägung, dass andere Dinge, die ungültig wird, unabhängig von der Prozessor verwendet.<schema>
element selbst? Das wäre zumindest ein eindeutiger Indikator für eine visuelle Inspektion, auch wenn XSD 1.0-nur Prozessoren verstehe es nichtGab es eine Diskussion im Zusammenhang mit diesem auf die XML-Schema-dev-Liste:
http://lists.w3.org/Archives/Public/xmlschema-dev/2013Sep/0000.html
Und die Schlussfolgerung war, dass wir sollten Sie nutzen das vc:minVersion und vc:maxVersion Attribute des xsd:schema-element, wenn wir bestimmen wollen, welche version des XML-Schemas.
Die Attribute sind nicht in der schema-namespace, sind Sie in der " http://www.w3.org/2007/XMLSchema-versioning " - namespace. So, Sie können diese auch auf einem XML-Schema version 1.0, und dieses schema gültig sein wird.
So, wenn Sie angeben möchten, wenn ein schema version 1.0, können Sie die version Attribute von xsd:schema-element wie diesem: vc:minVersion="1.0" vc:maxVersion="1.1" (minVersion ist inclusive, maxVersion ist exklusive).
Wenn Sie möchten, legen Sie die schema version 1.1, können Sie die version Attribute von xsd:schema-element wie diesem: vc:minVersion="1.1". Die maxVersion-Attribut muss nicht gesetzt werden, in diesem Fall, weil wir noch nicht XML-Schema-Versionen, die reibe, die 1.1.