Altova MapForce 2024 Professional Edition

Anhand dieses Beispiels wird gezeigt, wie Sie mit Hilfe der generierten Schema Wrapper-Bibliotheken schemakonforme XML-Dokumente programmatisch schreiben oder lesen. Werfen Sie zuerst einen Blick auf die Struktur des inkludierten Beispielschemas, bevor Sie den Beispielcode verwenden.

 

In dem in diesem Beispiel verwendeten Schema ist eine Bibliothek mit Büchern beschrieben. Unten sehen Sie die vollständige Definition des Schemas. Speichern Sie dieses Codefragment als Library.xsd, wenn Sie dieselben Ergebnisse wie in diesem Beispiel erhalten möchten. Sie benötigen dieses Schema zur Generierung der in diesem Beispiel verwendeten Codebibliotheken.

 

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="http://www.nanonull.com/LibrarySample" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.nanonull.com/LibrarySample" elementFormDefault="qualified" attributeFormDefault="unqualified">
  <xs:element name="Library">
    <xs:complexType>
        <xs:sequence>
          <xs:element name="Book" type="BookType" minOccurs="0" maxOccurs="unbounded"/>
        </xs:sequence>
        <xs:attribute name="LastUpdated" type="xs:dateTime"/>
    </xs:complexType>
  </xs:element>
  <xs:complexType name="BookType">
    <xs:sequence>
        <xs:element name="Title" type="xs:string"/>
        <xs:element name="Author" type="xs:string" maxOccurs="unbounded"/>
    </xs:sequence>
    <xs:attribute name="ID" type="xs:integer" use="required"/>
    <xs:attribute name="Format" type="BookFormatType" use="required"/>
  </xs:complexType>
  <xs:complexType name="DictionaryType">
    <xs:complexContent>
        <xs:extension base="BookType">
          <xs:sequence>
              <xs:element name="FromLang" type="xs:string"/>
              <xs:element name="ToLang" type="xs:string"/>
          </xs:sequence>
        </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  <xs:simpleType name="BookFormatType">
    <xs:restriction base="xs:string">
        <xs:enumeration value="Hardcover"/>
        <xs:enumeration value="Paperback"/>
        <xs:enumeration value="Audiobook"/>
        <xs:enumeration value="E-book"/>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>

 

Library ist ein Root-Element vom Typ complexType. Grafisch kann es in der Schema-Ansicht von XMLSpy folgendermaßen dargestellt werden:

xsd_diagram_Library

Wie oben gezeigt, hat die Bibliothek ein Attribut LastUpdated (definiert als xs:dateTime) und enthält eine Sequenz von Büchern. Jedes Buch hat den Typ xs:complexType und verfügt über zwei Attribute: eine ID (definiert als xs:integer) und ein Format. Das Format eines Buchs kann hardcover, paperback, audiobook oder e-book sein. Im Schema ist Format als xs:simpleType definiert, für den eine Enumeration der oben angeführten Werte verwendet wird..

 

Außerdem hat jedes Buch ein Title-Element (definiert als xs:string) sowie ein oder mehrere Author-Elemente (definiert als xs:string).

 

Die Bibliothek kann auch Bücher enthalten, die Wörterbücher sind. Wörterbücher haben den Typ DictionaryType, der durch Erweiterung vom Typ BookType abgeleitet ist. Ein Wörterbuch erbt also alle Attribute und Elemente eines Buchs plus zwei weitere Elemente: FromLang und ToLang, wie unten gezeigt.

xsd_diagram_DictionaryType

In den Elementen FromLang und ToLang ist die Quell- und Zielsprache des Wörterbuchs gespeichert.

 

Eine XML-Instanzdatei, die gemäß dem obigen Schema gültig ist, könnte also wie im Codefragment unten aussehen (Vorausgesetzt sie befindet sich im selben Verzeichnis wie die Schemadatei):

 

<?xml version="1.0" encoding="utf-8"?>
<Library xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://www.nanonull.com/LibrarySample" xsi:schemaLocation="http://www.nanonull.com/LibrarySample Library.xsd" LastUpdated="2016-02-03T17:10:08.4977404">  
  <Book ID="1" Format="E-book">
    <Title>The XMLSpy Handbook</Title>
    <Author>Altova</Author>      
  </Book>
  <Book ID="2" Format="Paperback" xmlns:n1="http://www.nanonull.com/LibrarySample" xsi:type="n1:DictionaryType">
    <Title>English-German Dictionary</Title>
    <Author>John Doe</Author>
    <FromLang>English</FromLang>
    <ToLang>German</ToLang>
  </Book>
</Library>

 

In den nächsten Kapiteln wird beschrieben, wie eine solche Datei programmatisch gelesen bzw. in diese Datei programmatisch geschrieben werden kann. Generieren Sie zuerst den Schema Wrapper-Code anhand des obigen Schemas. Gehen Sie dabei vor, wie unter Generieren von Code anhand von XML-Schemas oder DTDs beschrieben.

© 2017-2023 Altova GmbH