XML -Schema (W3C)
Dateiname Erweiterung | .xsd |
---|---|
Internet -Medientyp | Anwendung/XML, Text/XML |
Entwickelt von | World Wide Web Konsortium |
Art des Formats | XML -Schema -Sprache |
Erweitert von | Xml |
Standard | 1.0, Teil 1 Strukturen (Empfehlung), 1.0, Teil 2 DataTypes (Empfehlung), |
Xsd (XML -Schema -Definition), eine Empfehlung des World Wide Web Consortium (W3c), gibt an, wie die Elemente in einer erweiterbaren Markup -Sprache formell beschrieben werden (Xml) dokumentieren. Es kann von den Programmierern verwendet werden, um jeden Artikelinhalt in einem Dokument zu überprüfen, um sicherzustellen, dass es sich an die Beschreibung des Elements hält, in dem es platziert ist.[1]
Wie alle XML -Schemasprachen, XSD kann verwendet werden, um eine Reihe von Regeln auszudrücken, denen ein XML -Dokument entsprechend diesem Schema als "gültig" angesehen werden muss. Im Gegensatz zu den meisten anderen Schemasprachen wurde XSD jedoch auch mit der Absicht entwickelt, dass die Bestimmung der Gültigkeit eines Dokuments eine Sammlung von Informationen erzeugen würde, die an bestimmte Einhaltung gehalten werden Datentypen. Eine solche Postvalidierung Infoset kann bei der Entwicklung der XML -Dokumentverarbeitungssoftware nützlich sein.
Geschichte
XML -Schema, veröffentlicht als a W3C -Empfehlung Im Mai 2001,[2] ist einer von mehreren XML -Schemasprachen. Es war die erste getrennte Schemasprache für Xml Um den Empfehlungsstatus durch das W3C zu erreichen. Aufgrund der Verwirrung zwischen XML -Schema als spezifischer W3C WXS, ein Initialismus für W3C XML -Schema, während andere es als als bezeichneten Xsd, ein Initialismus für die Definition von XML -Schema.[3][4] In Version 1.1 hat der W3C beschlossen, XSD als bevorzugten Namen zu übernehmen, und das ist der in diesem Artikel verwendete Name.
In seinem Anhang der Referenzen erkennt die XSD -Spezifikation den Einfluss von an DTDs und andere frühe XML -Schema -Bemühungen wie z. DDML, Sox, Xml-data und Xdr. Es hat Merkmale aus jedem dieser Vorschläge übernommen, ist aber auch ein Kompromiss unter ihnen. Von diesen Sprachen wurden XDR und SOX nach der Veröffentlichung von XML -Schema weiterhin für eine Weile verwendet und unterstützt. Eine Anzahl von Microsoft Produkte unterstützten XDR bis zur Veröffentlichung von MSXML 6.0 (der XDR zugunsten des XML -Schemas fallen ließ) im Dezember 2006.[5] Handel eins, Inc. unterstützte seine SOX -Schema -Sprache bis Ende 2004 Insolvenz.
Die offensichtlichsten Funktionen in XSD, die in XMLs Native nicht verfügbar sind Dokumenttypdefinitionen (DTDs) sind Namespace Bewusstsein und Datentypen, dh die Fähigkeit, Elemente zu definieren und Inhalte zuzuordnen, die Werte wie Ganzzahlen und Daten enthält und nicht als willkürlicher Text.
Die XSD 1.0 -Spezifikation wurde ursprünglich im Jahr 2001 veröffentlicht, wobei eine zweite Ausgabe 2004 eine große Anzahl von Fehlern korrigierte. Xsd 1.1 wurde a W3C -Empfehlung in April 2012.
Schemas und Schema -Dokumente
Technisch gesehen a Schema ist eine abstrakte Sammlung von Metadaten, die aus einem Satz von besteht Schema -Komponenten: hauptsächlich Element- und Attributdeklarationen sowie komplexe und einfache Typdefinitionen. Diese Komponenten werden normalerweise durch Verarbeitung einer Sammlung von erstellt Schemadokumente, die die Quellsprachendefinitionen dieser Komponenten enthalten. In der Bevölkerung wird jedoch häufig ein Schema -Dokument als Schema bezeichnet.
Schema -Dokumente werden nach Namespace organisiert: Alle benannten Schema -Komponenten gehören zu einem Ziel -Namespace, und der Zielnamenspace ist eine Eigenschaft des Schema -Dokuments als Ganzes. Ein Schema -Dokument kann enthalten Andere Schema -Dokumente für den gleichen Namespace und Mai importieren Schema dokumentiert für einen anderen Namespace.
Wenn ein Instanzdokument gegen ein Schema validiert wird (ein Prozess bekannt als Bewertung), das für die Validierung verwendete Schema kann entweder als Parameter für die Validierungsmotor geliefert werden oder es kann direkt aus dem Instanzdokument mit zwei speziellen Attributen verwiesen werden. XSI: Schemalokalisierung
und XSI: NonameSpaceSchemalocation
. (Der letztere Mechanismus erfordert, dass der Kunde die Validierung anruft, um dem Dokument ausreichend zu vertrauen, um zu wissen, dass er gegen das richtige Schema validiert wird. "XSI" ist das herkömmliche Präfix für den Namespace. "http://www.w3.org/2001/xmlschema-instance".)
XML -Schema -Dokumente haben normalerweise die Dateiname -Erweiterung ".xsd". Ein Unikat Internet -Medientyp ist noch nicht für XSDS registriert, daher sollten "Anwendung/XML" oder "Text/XML" gemäß RFC 3023 verwendet werden.
Schema -Komponenten
Die Hauptkomponenten eines Schemas sind:
- Elementerklärungen, die Eigenschaften von Elementen definieren. Dazu gehören der Elementname und der Zielnamenspace. Eine wichtige Eigenschaft ist die Art des Elements, das die Attribute und Kinder einschränkt, die das Element haben kann. In XSD 1.1 kann der Typ des Elements auf die Werte seiner Attribute bedingt sein. Ein Element kann zu einer Substitutionsgruppe gehören; Wenn sich Element E in der Substitutionsgruppe von Element H befindet, dann kann E, wo das Schema es zulässt, dass E an seiner Stelle erscheinen kann. Elemente können Integritätsbeschränkungen aufweisen: Einzigartigkeitsbeschränkungen, die feststellen, dass bestimmte Werte innerhalb des in einem Element verwurzelten Unterbaums eindeutig sein müssen, und referentielle Einschränkungen, die feststellen, dass die Werte mit der Kennung eines anderen Elements übereinstimmen müssen. Elementdeklarationen können global oder lokal sein, sodass der gleiche Name für nicht verwandte Elemente in verschiedenen Teilen eines Instanzdokuments verwendet werden kann.
- Attributdeklarationen, die Eigenschaften von Attributen definieren. Auch hier enthalten die Eigenschaften den Attributnamen und den Zielnamenspace. Der Attributtyp schränkt die Werte ein, die das Attribut benötigen. Eine Attributerklärung kann auch einen Standardwert oder einen festen Wert enthalten (was dann der einzige Wert ist, den das Attribut benötigen kann.)
- Einfache und komplexe Typen. Diese werden im folgenden Abschnitt beschrieben.
- Modellgruppe und Attributgruppe Definitionen. Dies sind im Wesentlichen Makros: Namensgruppen von Elementen und Attributen, die in vielen verschiedenen Typdefinitionen wiederverwendet werden können.
- Ein Attribut verwendet Repräsentiert die Beziehung eines komplexen Typs und einer Attributdeklaration und gibt an, ob das Attribut obligatorisch oder optional ist, wenn es in diesem Typ verwendet wird.
- Ein Elementpartikel In ähnlicher Weise repräsentiert dies die Beziehung eines komplexen Typs und einer Elementerklärung und zeigt die minimale und maximale Anzahl an, mit der das Element im Inhalt angezeigt werden kann. Sowie Elementpartikel können Inhaltsmodelle umfassen Modellgruppe Partikel, die wie Nicht-Terminale in einer Grammatik wirken: Sie definieren die Wahl- und Wiederholungseinheiten in der Abfolge der zulässigen Elemente. Zusätzlich, Wildcard Partikel sind erlaubt, die eine Reihe verschiedener Elemente ermöglichen (möglicherweise jedes Element, das sich in einem bestimmten Namespace befindet).
Andere spezialisiertere Komponenten umfassen Anmerkungen, Behauptungen, Notationen und die Schema -Komponente die Informationen über das Schema als Ganzes enthält.
Typen
Einfache Typen (auch Datentypen genannt) beschränken die Textwerte, die in einem Element oder Attribut angezeigt werden können. Dies ist eine der wichtigsten Möglichkeiten, wie sich das XML -Schema von DTDs unterscheidet. Beispielsweise kann ein Attribut eingeschränkt sein, nur ein gültiges Datum oder eine Dezimalzahl zu halten.
XSD bietet einen Satz von 19 Primitive Datentypen (Anyuri
, Base64Binary
, Boolesche
, Datum
, Terminzeit
, Dezimal
, doppelt
, Dauer
, schweben
, sechs Bebär
, Tag auch
, Gonton
, gonaThday
, Gyear
, Gyearmonton
, NOTATION
, Qname
, Saite
, und Zeit
). Es ermöglicht es, neue Datentypen aus diesen Primitiven durch drei Mechanismen zu konstruieren:
- Einschränkung (Reduzierung des Satzes der zulässigen Werte),
- Liste (eine Abfolge von Werten zulassen) und
- Gewerkschaft (die Auswahl der Werte aus mehreren Typen ermöglichen).
In der Spezifikation selbst werden fünfundzwanzig abgeleitete Typen definiert, und weitere abgeleitete Typen können von Benutzern in ihren eigenen Schemata definiert werden.
Zu den Mechanismen, die für die Einschränkung von Datentypen verfügbar sind, gehören die Fähigkeit, minimale und maximale Werte, reguläre Ausdrücke, Einschränkungen für die Länge der Zeichenfolgen und Einschränkungen der Anzahl der Ziffern in Dezimalwerten anzugeben. XSD 1.1 fügt erneut Behauptungen hinzu, die Fähigkeit, eine willkürliche Einschränkung mittels eines anzugeben XPath 2.0 Ausdruck.
Komplexe Typen beschreiben den zulässigen Inhalt eines Elements, einschließlich seiner Element- und Textkinder und seiner Attribute. Eine komplexe Typdefinition besteht aus einer Reihe von Attributanwendungen und einem Inhaltsmodell. Zu den Sorten des Inhaltsmodells gehören:
- Nur Element-Inhalt, in dem kein Text erscheinen kann (außer Whitespace oder Text, der von einem untergeordneten Element eingeschlossen ist)
- Einfacher Inhalt, in dem Text erlaubt ist, aber Kinderelemente nicht sind
- leerer Inhalt, in dem weder Text noch untergeordnete Elemente erlaubt sind
- gemischter Inhalt, der sowohl Elemente als auch Text ermöglicht, um zu erscheinen
Ein komplexer Typ kann durch Einschränkung (einige Elemente, Attribute oder Werte, die der Basistyp zulässt) oder dadurch (damit zusätzliche Attribute und Elemente zu ermöglichen) aus einem anderen komplexen Typ abgeleitet werden. In XSD 1.1 kann ein komplexer Typ durch Behauptungen eingeschränkt werden -XPath 2.0 Ausdrücke wurden gegen den Inhalt bewertet, der auf True bewertet wird.
Post-Schema-Validation-Infoset
Nach der XML-Schema-basierten Validierung ist es möglich, die Struktur und den Inhalt eines XML-Dokuments in Bezug auf die Datenmodell Das war während der Validierung implizit. Das XML -Schema -Datenmodell enthält:
- Das Wortschatz (Element- und Attributnamen)
- Das Inhaltsmodell (Beziehungen und Struktur)
- Die Datentypen
Diese Informationssammlung wird als Post-Schema-Validation Infoset (PSVI) bezeichnet. Das PSVI gibt ein gültiges XML -Dokument an und erleichtert die Behandlung des Dokument Objekt orientierte Programmierung (OOP) Paradigmen.
Sekundäre Verwendungen für XML -Schemata
Der Hauptgrund für die Definition eines XML -Schemas besteht darin, ein XML -Dokument formell zu beschreiben. Das resultierende Schema hat jedoch eine Reihe anderer Verwendungen, die über die einfache Validierung hinausgehen.
Codegenerierung
Das Schema kann verwendet werden, um Code zu generieren, das als als bezeichnet bezeichnet wird XML -Datenbindung. Dieser Code ermöglicht es, den Inhalt von XML -Dokumenten als Objekte in der Programmierumgebung zu behandeln.
Generierung der XML -Dateistrukturdokumentation
Das Schema kann verwendet werden, um eine menschlich-lesbare Dokumentation einer XML-Dateistruktur zu generieren. Dies ist besonders nützlich, wenn die Autoren die Annotationselemente verwendet haben. Für die Erzeugung der Dokumentation gibt es keine formelle Standard. Es gibt jedoch eine Reihe von Tools, wie z.
Kritik
Obwohl das XML -Schema insofern erfolgreich ist, wurde es weitgehend angenommen und erreicht weitgehend das, was es sich vorgestellt hat, aber es war Gegenstand einer großen Kritik, vielleicht mehr als jede andere W3C -Empfehlung. Gute Zusammenfassungen der Kritikpunkte werden von James Clark geliefert.[6] Anders Møller und Michael Schwartzbach,[7] Rick Jelliffe[8] und David Webber.[9]
Allgemeine Probleme:
- Es ist zu kompliziert (die Spezifikation beträgt mehrere hundert Seiten in einer sehr technischen Sprache), daher ist es schwierig, von Nicht-Experten zu verwenden-aber viele Nicht-Experten benötigen Schemata, um Datenformate zu beschreiben. Die W3C -Empfehlung selbst ist äußerst schwer zu lesen. Die meisten Benutzer finden W3CS XML -Schema -Primer viel einfacher zu verstehen.
- XSD fehlt eine formale mathematische Spezifikation. (Dies macht es schwierig, über Schemata zu argumentieren, beispielsweise zu beweisen, dass eine Änderung an einem Schema rückwärts kompatibel ist.)
- Es gibt viele Überraschungen in der Sprache, beispielsweise, dass die Einschränkung der Elemente unterschiedlich funktioniert als die Einschränkung der Attribute.
Praktische Einschränkungen der Ausdrucksfähigkeit:
- XSD bietet sehr schwache Unterstützung für nicht ordnungsgemäße Inhalte.
- XSD kann keine bestimmte benötigen Wurzelelement (Daher sind zusätzliche Informationen erforderlich, um auch die einfachsten Dokumente zu validieren).
- Bei Beschreibung gemischter InhaltDie Charakterdaten können in keiner Weise eingeschränkt werden (nicht einmal ein Satz gültiger Zeichen kann angegeben werden).
- Inhalts- und Attributdeklarationen können nicht vom Attributen oder Elementkontext abhängen (Dies wurde auch als zentrales Problem der DTD aufgeführt).
- es ist nicht 100% selbst beschreiben (Als ein triviales Beispiel siehe den vorherigen Punkt), obwohl dies eine anfängliche Entwurfsanforderung war.
- Standardeinstellungen kann nicht getrennt von den Erklärungen angegeben werden (dies macht es schwierig, Familien von Schemata herzustellen, die sich nur in den Standardwerten unterscheiden). Elemente Standard Kann nur Zeichendaten sein (nicht Markup enthalten).
Technische Probleme:
- Obwohl es technisch gesehen einen Namespace-Konformanten ist, scheint es nicht dem Namespace-Geist zu folgen (z. B. "nicht qualifizierte Einheimische").
- XSD 1.0 lieferte keine Einrichtungen, um festzustellen, dass der Wert oder Vorhandensein eines Attributs von den Werten oder dem Vorhandensein anderer Attribute abhängt (sogenannte Ko-auferlegende Einschränkungen). Dies wurde in XSD 1.1 festgelegt.
- Die Menge der angebotenen XSD -Datentypen ist sehr willkürlich.[10]
- Die beiden Aufgaben der Validierung und Augmentation (Hinzufügen von Typinformationen und Standardwerten) sollten getrennt gehalten werden.
Version 1.1
Xsd 1.1 wurde a W3C -Empfehlung in April 2012Dies bedeutet, dass es sich um eine zugelassene W3C -Spezifikation handelt.
Wichtige neue Funktionen in XSD 1.1 sind:
- Die Fähigkeit, Behauptungen gegen den Dokumentinhalt mitzuteilen XPath 2.0 Ausdrücke (eine Idee, die ausgeliehen ist Schematron).
- Die Möglichkeit, den Typ auszuwählen, gegen den ein Element basierend auf den Werten der Attribute des Elements validiert wird ("Bedingte Typzuordnung").
- Entspannen der Regeln, mit denen explizite Elemente in einem Inhaltsmodell nicht übereinstimmen dürfen, werden auch die Wildkarten übereinstimmen, die auch vom Modell zulässig sind.
- Die Fähigkeit, Wildcards (sowohl für Elemente als auch für Attribute) anzugeben, die für alle Typen im Schema gelten, damit sie alle dieselbe Erweiterbarkeitsrichtlinie implementieren.
Bis zum vorgeschlagenen Empfehlungsentwurf schlug XSD 1.1 auch die Zugabe eines neuen numerischen Datentyps PrecisionDecimal vor. Dies erwies sich als kontrovers und wurde daher in einem späten Entwicklungsstadium aus der Spezifikation fallen.
Siehe auch
- Liste der Arten von XML -Schemata - Liste der im Internet verwendeten XML -Schemas, die nach Zweck sortiert sind
- Entspannen Sie Ng - Eine andere XML -Schema -Sprache (ein internationaler ISO -Standard), der häufig mit XSD -Datentypen verwendet wird
- XML -Schema -Redakteure - Informationen zu XSD -Tools
- XML -Schemasprachen - Vergleicht XSD mit anderen XML -Schemasprachen
- Einzigartige Partikelzuordnung
- Kanonisches Modell
Verweise
- ^ "Definition XSD (XML -Schema -Definition)"TechTarget, abgerufen am 10. Juni 2014
- ^ "XML und Semantic Web W3C Standards Timeline" (PDF). 2012-02-04.
- ^ Sehen Schema - W3c
- ^ Sehen W3C XML -Schema -Definitionssprache (XSD) 1.1 Teil 1: Strukturen
- ^ "Entfernung des XDR -Schemasunterstützung in MSXML 6.0". Abgerufen 2010-09-19.
- ^ James Clark Zusammenfassung von XML -Schema Kritik und Förderung von Entspannen Sie Ng als Alternative,https://web.archive.org/web/20150316212413/http://www.imc.org/ietf-xml-use/mail-archive/msg00217.html
- ^ Anders Møller und Michael I. Schwartzbach präsentieren "Probleme mit XML Schema", http://cs.au.dk/~amoeller/xml/schemas/xmlschema-problems.html
- ^ Rick Jelliffe Kritik im Mai 2009, https://web.archive.org/web/20090516232816/http://broadcast.oreilly.com/2009/05/w3c-please-put-xsd-11-on-hold.html
- ^ David Webber OASIS -Vergleich und Einblicke Weißbuch aus August 2008, http://www.oasis-open.org/committees/download.php/29164/white%20paper%20on%20cam%20and%20xsd.pdf
- ^ Dieser Punkt wird von Uche Ogbuji verstärkt Mehr zu XML Class Warfare - O'Reilly Onlamp Blog
Weitere Lektüre
- Definitives XML -Schema, Priscilla Walmsley, Prentice-Hall, 2001, ISBN0-13-065567-8
- XML -Schema, Eric van der Vlist, O'Reilly, 2001, ISBN0-596-00252-1
- Der XML -Schema -Begleiter, Neil Bradley, Addison-Wesley, 2003, ISBN0-321-13617-9
- Professionelle XML -Schemas, Jon Ducket et al., Wrox Press, 2001, ISBN1-86100-547-4
- XML -Schemata, Lucinda Dykes et al., Sybex, ISBN0-7821-4045-9
Externe Links
W3C XML Schema 1.0 Spezifikation
W3C XML Schema 1.1 Spezifikation
Sonstiges
- XML -Schema bei Curlie
- Sparql2xquery Transformieren Sie das XML -Schema in Eule. Karte XML-Schemas und OWL-RDF/s-Ontologien.