HTML Tutorials |
|
XML Tutorials |
|
Browser Scripting |
|
Server Scripting |
|
.NET (dotnet) |
|
Multimedia |
|
Web Building |
|
Java Tutorials |
|
Programming Langauges |
|
Soft Skills |
|
Database Tutorials |
|
Operating System |
|
Software Testing |
|
SAP Module |
|
Networking Programming |
|
Microsoft Office |
|
Accounting |
|
|
Dieses Kapitel zeigt, wie man ein XML Schemata schreibt. Du erf�hrst auch, da� ein xml Schema in unterschiedliche Weisen geschrieben werden kann.
|
Ein XML Dokument
|
Lassen Sie uns einen Blick an den dieses XML Dokumenten haben, die �shiporder.xml genannt werden,�:
|
<?xml version="1.0" encoding="ISO-8859-1"?>
<shiporder orderid="889923"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="shiporder.xsd">
<orderperson>John Smith</orderperson>
<shipto>
<name>Ola Nordmann</name>
<address>Langgt 23</address>
<city>4000 Stavanger</city>
<country>Norway</country>
</shipto>
<item>
<title>Empire Burlesque</title>
<note>Special Edition</note>
<quantity>1</quantity>
<price>10.90</price>
</item>
<item>
<title>Hide your heart</title>
<quantity>1</quantity>
<price>9.90</price>
</item>
</shiporder>
|
|
Das XML Dokument oben bestehen aus einem Wurzelelement, �shiporder�, das ein erforderliches Attribut enth�lt, das �orderid� genannt wird. Das �shiporder� Element enthalten drei unterschiedliche Kindelemente: �orderperson�, �shipto� und �Einzelteil�. Das �Einzelteil� Element erscheinen zweimal, und es enth�lt �Titel�, ein wahlweise freigestelltes �Anmerkung� Element, �Quantit�t� und ein �Preis� Element.
Die Linie oben: xmlns: xsi= " http://www.w3.org/2001/XMLSchema-instance �erkl�rt der XML grammatischen Definition, da� dieses sollte gegen ein Schema validiert werden dokumentiert. Die Linie: xsi: noNamespaceSchemaLocation= " shiporder.xsd� spezifizieren, WO das Schema liegt (hier ist es im gleichen Heft wie �shiporder.xml�).
|
Ein XML Schema herstellen
|
Jetzt m�chten wir ein Schema f�r das XML Dokument oben herstellen.
Wir beginnen, indem wir eine neue Akte �ffnen, die wir benennen als �shiporder.xsd�. Um das Schema herzustellen k�nnten wir der Struktur in den XML Dokumenten einfach folgen und jedes Element definieren wie wir es finden. Wir beginnen mit der Standard-XML Erkl�rung, die von den xs gefolgt wird: Schemaelement, das ein Schema definieren:
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
...
...
</xs:schema>
|
|
Im Schema oben benutzen wir das Standardnamespace (xs), und der URI, der mit diesem namespace verbunden ist, ist die Schemasprachendefinition, die den Standardwert von http://www.w3.org/2001/XMLSchemas hat.
Zun�chst m�ssen wir �shiporder� Element definieren. Dieses Element l��t ein Attribut und es andere Elemente enthalten, folglich halten wir es f�r eine komplizierte Art. Das Kindelement des �shiporder� Elements wird durch xs umgeben: Element der Reihe nach ordnen, das eine bestellte Reihenfolge der Vorelemente definiert:
|
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
...
...
</xs:sequence>
...
</xs:complexType>
</xs:element>
|
|
Dann m�ssen wir das �orderperson� Element als einfache Art definieren (weil sie keine Attribute oder andere Elemente enth�lt). Die Art (xs: Zeichenkette) wird mit dem namespace Pr�fix vorgesetzt, das mit XML Schemata verbunden ist, das eine vorbestimmte Schemadatenart anzeigt:
|
<xs:element name="orderperson" type="xs:string"/>
|
|
Zun�chst m�ssen wir definieren zwei Elemente, die von der komplizierten Art sind: �shipto� und �Einzelteil�. Wir beginnen, indem wir das �shipto� Element definieren, wie folgt:
|
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
Mit Schema k�nnen wir die Zahl m�glichem Auftreten f�r ein Element mit den maxOccurs und den minOccurs Attributen definieren. maxOccurs spezifizieren die H�chstzahl des Auftretens f�r ein Element und minOccurs spezifiziert die Mindestzahl des Auftretens f�r ein Element. Der Default-Wert f�r beide maxOccurs und minOccurs ist immer 1!
Jetzt k�nnen wir �Einzelteil� Element definieren. Dieses Element kann erscheinen mehrfache Zeiten innerhalb des �shiporder� Elements. Dieses wird spezifiziert, indem man das maxOccurs Attribut des �Einzelteil� Elements �unbegrenzt� einstellt, die bedeuten, da� es da vieles Auftreten des �Einzelteil� Elements geben kann, wie der Autor w�nscht. Beachten, da� das �Anmerkung� Element hier wahlweise freigestellt ist. Wir haben dieses spezifiziert, indem wir das minOccurs Attribut einstellten, um null zu sein:
|
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
|
|
Wir k�nnen das Attribut �shiporder� des Elements jetzt erkl�ren. Da dieses ein erforderliches Attribut ist, spezifizieren wir " das erforderte� use=.
Anmerkung: Die Attributerkl�rung mu� immer zuletzt kommen:
|
<xs:attribute name="orderid" type="xs:string" use="required"/>
|
|
Ist hier die komplette Auflistung der Schemaakte, die das �shiporder.xsd� genannt wird:
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string" minOccurs="0"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
<xs:attribute name="orderid" type="xs:string" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Das Schema teilen
|
Die vorhergehende Designmethode ist sehr einfach, aber kann schwierig sein, zu lesen und beizubehalten, wann Dokument kompliziert sind.
Die folgende Designmethode basiert auf alle Elemente und Attribute zuerst definieren, und auf sie dann sich beziehen die Bezugsattribute verwendend.
Ist hier das neue Design der Schemaakte (�shiporder.xsd�):
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- definition of simple elements -->
<xs:element name="orderperson" type="xs:string"/>
<xs:element name="name" type="xs:string"/>
<xs:element name="address" type="xs:string"/>
<xs:element name="city" type="xs:string"/>
<xs:element name="country" type="xs:string"/>
<xs:element name="title" type="xs:string"/>
<xs:element name="note" type="xs:string"/>
<xs:element name="quantity" type="xs:positiveInteger"/>
<xs:element name="price" type="xs:decimal"/>
<!-- definition of attributes -->
<xs:attribute name="orderid" type="xs:string"/>
<!-- definition of complex elements -->
<xs:element name="shipto">
<xs:complexType>
<xs:sequence>
<xs:element ref="name"/>
<xs:element ref="address"/>
<xs:element ref="city"/>
<xs:element ref="country"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="item">
<xs:complexType>
<xs:sequence>
<xs:element ref="title"/>
<xs:element ref="note" minOccurs="0"/>
<xs:element ref="quantity"/>
<xs:element ref="price"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="shiporder">
<xs:complexType>
<xs:sequence>
<xs:element ref="orderperson"/>
<xs:element ref="shipto"/>
<xs:element ref="item" maxOccurs="unbounded"/>
</xs:sequence>
<xs:attribute ref="orderid" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
|
|
Verwenden genannter von Types
|
Die dritte Designmethode definieren Kategorien, oder Arten, die erm�glicht uns, Elementdefinitionen wiederzuverwenden. Dieses wird getan, indem man die simpleTypes und das complexTypes Element nennt, und zeigt dann auf sie durch die Art Attribut des Elements.
Ist hier das dritte Design der Schemaakte (�shiporder.xsd�):
|
<?xml version="1.0" encoding="ISO-8859-1" ?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="stringtype">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<xs:simpleType name="inttype">
<xs:restriction base="xs:positiveInteger"/>
</xs:simpleType>
<xs:simpleType name="dectype">
<xs:restriction base="xs:decimal"/>
</xs:simpleType>
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="shiptotype">
<xs:sequence>
<xs:element name="name" type="stringtype"/>
<xs:element name="address" type="stringtype"/>
<xs:element name="city" type="stringtype"/>
<xs:element name="country" type="stringtype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="itemtype">
<xs:sequence>
<xs:element name="title" type="stringtype"/>
<xs:element name="note" type="stringtype" minOccurs="0"/>
<xs:element name="quantity" type="inttype"/>
<xs:element name="price" type="dectype"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="shipordertype">
<xs:sequence>
<xs:element name="orderperson" type="stringtype"/>
<xs:element name="shipto" type="shiptotype"/>
<xs:element name="item" maxOccurs="unbounded" type="itemtype"/>
</xs:sequence>
<xs:attribute name="orderid" type="orderidtype" use="required"/>
</xs:complexType>
<xs:element name="shiporder" type="shipordertype"/>
</xs:schema>
|
|
The restriction element indicate that the datatype is derived from a W3C XML Schema namespace datatype.
So, the following fragment mean that the value of the element or attribute must be a string value:
|
<xs:restriction base="xs:string">
|
|
The restriction element is more often used to apply restriction to elements.
Look at the following line from the schema above:
|
<xs:simpleType name="orderidtype">
<xs:restriction base="xs:string">
<xs:pattern value="[0-9]{6}"/>
</xs:restriction>
</xs:simpleType>
|
|
This indicate that the value of the element or attribute must be a string,
it must be exactly six characters in a row, and those characters must be a number from 0 to 9.
|
|
|
Keywords:
xsd tutorial,xsd xml,xsd dtd,xsd examples,xsd validator,xsd specification,sample xsd,xsd tools,xsd example,xsd editor,xsd syntax,xslt xsd,xsd format,cdata xsd,xml element.
|
|
HTML Quizes |
|
XML Quizes |
|
Browser Scripting Quizes |
|
Server Scripting Quizes |
|
.NET (dotnet) Quizes |
|
Multimedia Quizes |
|
Web Building Quizes |
|
Java Quizes |
|
Programming Langauges Quizes |
|
Soft Skills Quizes |
|
Database Quizes |
|
Operating System Quizes |
|
Software Testing Quizes |
|
SAP Module Quizes |
|
Networking Programming Quizes |
|
Microsoft Office Quizes |
|
Accounting Quizes |
|
|