Average rating:

In diesem Artikel werden wir prüfen, wie man ein XML-Schema. Um zu verstehen, XML (Extensible Markup Language)-Schemata werden wir die Grundlagen von XML in dieser Einführung. Sie sind zu erwarten, dass ein grundlegendes Verständnis von XML für dieses How-to.

XML- Die Extensible Markup Language ist ein Text-basierten Cross-Plattform-Sprache, die können Sie zum Speichern von Daten (zB Adressen in einem Adressbuch) in einer strukturierten Art und Weise. Das XML-Dokument ist zu erwarten, dass korrekte Syntax. Deshalb, wenn Sie XML-Dokumente sollten sie gut gebildet. Ein gut gebildet Dokument ist wie folgt:

  • Geschlossen Tags (<hello> </ hallo> oder <hi />)
  • Ein Element des Attributs muss in Anführungszeichen (<candy price="0.50">)
  • XML ist Groß-und Kleinschreibung. Mit anderen Worten den Anfang und das Ende-Tag sollte den gleichen Fall

Ein sehr einfaches Beispiel für ein XML-Dokument ist unter einer Candy Store-Menü.

<? xml version = "1.0" encoding = "UTF-8"?>
<candystore>
<candy>
<productName company="XYZ"> Lutscher </ name>
<id> 634847 </ id>
<price> 0,50 </ price>
</ Candy>
<candy>
<productName company="ABC"> Mints </ name>
<id> 634812 </ id>
<price> 0,75 </ Preis>
</ Candy>
</ Zuckerbackerei>

Die erste Erklärung ist die Verarbeitungsanweisung. Es erzählt die Parser arbeiten wir mit einer bestimmten Version von XML. Der Rest des Dokuments besteht aus unserer-Tags und-Elemente. In dem obigen Beispiel das Element "name" ist ein Attribut der "Firma". Eine große Weise zu erinnern, ein Attribut ist zu denken, der es als eine Eigenschaft, die etwas haben kann. Ein Bonbon hat einen Namen. Der Name wird im Zusammenhang mit einer bestimmten Firma.

In unserem, wie wir zu gehen, um das obige Beispiel und erstellen Sie eine XML-Schema für sie, die Regeln definieren, wie unser Element der Inhalt, oder in anderen Worten, müssen angegeben werden. (Zum Beispiel, in welchem Format wird erwartet, für unsere ID? Kann es Buchstaben?)

XML Schema - Ein XML-Schema erklärt, Metadaten, bei einer bestimmten Art, unabhängig davon, ob es sich um einfache oder komplexe, auf die Elemente und ihre Attribute in ein XML-Dokument.

Step 1:

Werfen wir einen Blick wieder auf unserem Beispiel für die Candy Store.

<? xml version = "1.0" encoding = "UTF-8"?>
<candystore>
<candy>
<productName company="XYZ"> Lutscher </ name>
<id> 634847 </ id>
<price> 0,50 </ price>
</ Candy>
<candy>
<productName company="ABC"> Mints </ ProductName>
<id> 634812 </ id>
<price> 0,75 </ Preis>
</ Candy>
</ Zuckerbackerei>

Unsere Zuckerbackerei Element hat zwei Candy-sub-Elemente. Jedes Element hat die Süßigkeiten Unterelemente des Namens, ID und Preis. Es hat auch ein Attribut namens Unternehmen. Beim Aufbau der Syntax-Regeln müssen wir definieren, Einschränkungen für das Format der Daten. Diese Beschränkungen können sich auf, wie die Daten verwendet werden. Wenn, zum Beispiel, unsere Süßigkeiten-ID muss sich auf ein Produkt der Rechnung innerhalb von 6 Zeichen, dann werden Sie feststellen, dass unsere Zwänge. Fragen Sie sich selbst ein paar Fragen zu Ihren Daten:

1. Ist die Daten müssen nur Ziffern oder Buchstaben?
2. Ist die Daten zu einer bestimmten Länge? Oder eine minimale oder maximale Länge mehr konkret?
3. Ist die Daten auf eine bestimmte Eigenschaft oder subelement festgelegt? Oder sind sie optional?

Nun, wir haben einige Ideen, welche Fragen können wir uns fragen, können wir vorankommen. Lassen Sie uns eine Reihe von Regeln, bevor wir beginnen, unsere XML-Schema-Code.

1. Der Name der Candy ist erforderlich.
2. Die Firma kann nicht mehr als 30 Zeichen lang sein. Es ist optional.
3. Die ID muss alle Ziffern und muss genau 6 Zeichen lang sein. Es ist nicht erforderlich.
4. Der Preis ist nicht erforderlich.

Step 2:

Mit unserer Liste der Regeln können wir nun unser Schema. Zunächst müssen wir eine Erklärung von unserem Namespace genannt xsd. Wir können jeden Namen benutzen wie wir wollen, dass candyxsd, aber xsd ist kurz und einfach zu verstehen. Der Begriff xsd wird als Präfix in unserem Schema, um unserem Namespace.

<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

In Ihrem Schema müssen Sie jedes Element, wie eine bestimmte Art. Es gibt 2 Arten können Sie:

Ganz einfach:
<xsd:element name="" nameofelement "type=" nameofbuilt-insimpletype ">

oder

<xsd:simpleType name="" nameofSimpleType ">
abgeleitet Art Zwänge ...
</ xsd: simpleType>

Komplexe:
<xsd:complexType name="" nameofComplexType ">
<xsd:sequence>
Elemente ...
</ xsd: sequence>
</ xsd: complexType>

Der Unterschied zwischen den 2 ist ganz einfach. Ein einfacher Typ kann nicht sein, Attribute oder Element Inhalt.

In Schritt 3 gehen wir über die in einfache Typen.

Step 3:

Nun, da Sie sich mit dem Element-Typen, lassen Sie uns ein paar der "Built-in-Typen.

  • Datum
  • string
  • decimal
  • Zeit
  • integer, long, int, positiveInteger-, Doppel-, Float

Sie können die vollständige Liste der Built-in einfache Typen.

Mit einem eingebauten Art können wir eine einfache Art, wie Preis-oder ID, die nicht über ein Attribut oder eine subelement.

<xsd:element name="price" type="xsd:decimal" />
<xsd:element name="id" type="positiveInteger"/>

Step 4:

Das Bild zeigt, da die Struktur der XML-Schema. Wir brauchen, um Ihre komplexen und fügen Sie in Zwänge auf Größe für unsere Preis-und ID. Um sicherzustellen, dass unsere id-Attribut und das Unternehmen haben ein bestimmtes Format werden wir schaffen, 2 einfache Arten. Wir wird die ID der Art der idType. Das Attribut wird, wird das Art der companyType.

<xsd:simpleType name="idType">
<xsd:restriction base="xsd:positiveInteger">
<xsd:totalDigits value="6"/>
</ xsd: Beschränkung>
</ xsd: simpleType>

<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: Beschränkung>
</ xsd: simpleType>

Die Beschränkung Tag in der einfachen Art Element ermöglicht es uns zu erklären, Informationen zu unseren einfachen Art der Facette. Eine Facette seinerseits eine einfache Art. Wir können feststellen, wie die Dinge, wie die Zahlen für einen numerischen Wert für die Mindestlänge für die String-Wert. Stellen Sie sicher, dass auf der "Built-in einfache Typen Facettenfür die Liste. Die Base-Attribut wird festgelegt, welche Art Beschränkungen angewandt werden kann. Mit anderen Worten, es wäre nicht gültig zu verwenden maxLength mit allen numerischen Werte wie Dezimal-oder Doppelzimmer. Die totalDigits Facette ist für diese.

Step 5:

Nun müssen Sie Ihre komplexe Typen, die alle die anderen. Wenn Sie daran erinnern, von den früheren, Ihre komplexen Typen können Sub-Elemente und Attribute. Unsere Zuckerbackerei Element hat die Candy-sub-Element. Die Candy-Element besteht aus drei Sub-Elemente (Artikelname, Preis, und id). Die ProductName Element hat ein Attribut, daher muss sie gebaut werden, um ihn und seinen Wert.

Unsere Candy Shop-Element enthält alles, was:

<xsd:element name="candystore" type="candystoreType"/>
<xsd:complexType name="candystoreType">
<xsd:sequence>
<xsd:element name="candy" type="candyType" minOccurs="0" maxOccurs="unbounded"/>
</ xsd: sequence>
</ xsd: complexType>

Zunächst erklären wir Zuckerbackerei ein Element, das ist ein complexType. Wenn Sie sich erinnern werden unsere Candy Element kann wiederholt werden, so oft wie gewünscht. Das ist, wo unsere Attribute minOccurs und maxOccurs hereinkommen Sie die maximale und minimale Vorkommen. Sagen Sie zum Beispiel nur wollte es nur einmal oder gar nicht. Dann minOccurs könnte noch 0 und maxOccurs wäre 1.Our Candy-sub-Element ist als eine Art genannt candyType. Dieser ist recht groß.

<xsd:complexType name="candyType">
<xsd:sequence>
ProductName Element wird hier ... Weiter unten ...
<xsd:element name="id" type="idType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="price" type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
</ xsd: sequence>
</ xsd: complexType>

Erinnern Sie sich an den simpleType Informationen für unsere id? Hier bezieht er sich auf seine Art, die hieß idType.

Hier ist das Element, das war ProductName Schnitt von oben, damit es könnte erläutert werden.

<xsd:element name="productName" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="company" type="companyType"/>
</ xsd: extension>
</ xsd: simpleContent>
</ xsd: complexType>
</ xsd: element>

Innerhalb der Element-Tags ProductName wir erklären complexType. Wir müssen in der Lage, die in einem String-Wert für das Element ProductName so müssen wir erklären, simpleContent Typ. Dies wird es uns ermöglichen, die Einschränkungen oder Erweiterungen auf unserer Text basiert complexType. Wenn wir nicht diese Schritte dann werden wir nicht in der Lage wäre, um den Text für den Namen der Bonbons zwischen den ProductName Tags. In unserem Fall wollen wir in der Lage, die in einem String-Wert. Auch haben wir eine Erweiterung für unsere Attribut mit dem Namen "Unternehmen, muss erklärt werden. Die Base-Attribut für die Erweiterung Element legt fest, über unsere eingebauten Datentyp (zB string, lang, etc.), ein simpleType oder complexType. Wenn wir es alle gemeinsam sind wir fertig!

Stellen Sie sicher, dass XSD-Datei ist dieser an der Spitze:

<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">

Und die xsd: schema Tage sollten geschlossen werden, mit </ xsd: schema> ganz am Ende, nachdem alles.

Nehmen Sie das ausgefüllte XSD Datei und nennen Sie sie candystore.xsd. Es ist wirksam und gut gebildet.

Step 6:

Unsere letzte Schritt besteht darin, unsere XML-Schema zu unserer ursprünglichen XML-Datei.

candystore.xml

<? xml version = "1.0" encoding = "UTF-8"?>
<candystore xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="candystore.xsd">
<candy>
<productName company="XYZ"> Lutscher </ ProductName>
<id> 634847 </ id>
<price> 0,50 </ price>
</ Candy>
<candy>
<productName company="ABC"> Mints </ ProductName>
<id> 634812 </ id>
<price> 0,75 </ Preis>
</ Candy>
</ Zuckerbackerei>

candystore.xsd

<? xml version = "1.0" encoding = "UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="candystore" type="candystoreType"/>
<xsd:complexType name="candystoreType">
<xsd:sequence>
<xsd:element name="candy" type="candyType" minOccurs="0" maxOccurs="unbounded"/>
</ xsd: sequence>
</ xsd: complexType>

<xsd:complexType name="candyType">
<xsd:sequence>
<xsd:element name="productName" minOccurs="1" maxOccurs="1">
<xsd:complexType>
<xsd:simpleContent>
<xsd:extension base="xsd:string">
<xsd:attribute name="company" type="companyType"/>
</ xsd: extension>
</ xsd: simpleContent>
</ xsd: complexType>
</ xsd: element>
<xsd:element name="id" type="idType" minOccurs="1" maxOccurs="1"/>
<xsd:element name="price" type="xsd:decimal" minOccurs="1" maxOccurs="1"/>
</ xsd: sequence>
</ xsd: complexType>

<xsd:simpleType name="idType">
<xsd:restriction base="xsd:positiveInteger">
<xsd:totalDigits value="6"/>
</ xsd: Beschränkung>
</ xsd: simpleType>
<xsd:simpleType name="companyType">
<xsd:restriction base="xsd:string">
<xsd:maxLength value="30"/>
</ xsd: Beschränkung>
</ xsd: simpleType>
</ xsd: schema>

Hinweis: Stellen Sie sicher, dass Ihre gesamte XML-Schema ist in der <xsd:schema> </ xsd: schema> Tags.