Altova XMLSpy 2024 Enterprise Edition

Cet exemple illustre comment utiliser les bibliothèques de schema wrapper générées afin d’écrire ou de lire des documents XML conforme en terme de programmation au schéma. Avant d’utiliser le code d’échantillon, veuillez prendre le temps de comprendre la structure du schéma d’exemple inclus.

 

Le schéma utilisé dans cet exemple décrit une bibliothèque de livres. La définition complète du schéma est affichée ci-dessous. Enregistrer cet extrait de code en tant que Library.xsd si vous souhaitez obtenir les mêmes résultats que dans cet exemple. Vous aurez besoin de ce schéma pour générer les bibliothèques de code utilisées dans cet exemple.

 

<?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 est un élément racide d’un complexType qui peut être représenté graphiquement comme suit dans le mode Schéma de XMLSpy:

xsd_diagram_Library

Comme indiqué ci-dessus, la bibliothèque contient un attribut LastUpdated (défini en tant que xs:dateTime), et stocke une séquence de livres. Chaque livre est un xs:complexType et possède deux attributs : un ID (défini en tant que xs:integer), et un Format. Le format de chaque livre peut être hardcover, paperback, audiobook, ou e-book. Dans le schéma, Format est défini en tant que xs:simpleType qui utilise une énumération des valeurs mentionnées ci-dessus.

 

Chaque livre présente aussi un élément Title (défini en tant que xs:string), et un ou plusieurs Author éléments (définis en tant que xs:string).

 

La bibliothèque peut aussi contenir des livres qui sont des dictionnaires. Dictionaries ont le type DictionaryType, qui est dérivé par extension depuis BookType. En d’autres termes, un dictionnaire hérite de tous les attributs et éléments d’un Book (livre), plus deux éléments supplémentaires : FromLang et ToLang, comme illustré ci-dessous.

xsd_diagram_DictionaryType

Les éléments FromLang et ToLang stockent le langage de source et de destination du dictionnaire.

 

Un fichier d’instance XML valide conformément au schéma ci-dessus peut donc ressembler à l’exemple affiché dans l’exemple ci-dessous (s’il se trouve dans le même répertoire que le fichier de schéma) :

 

<?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>

 

La rubrique suivante illustre comment lire ou écrire dans un tel fichier par le biais d’un programme. Pour commencer, générer le code de schema wrapper depuis le schéma ci-dessus, en utilisant les étapes décrites dans Générer du code depuis des Schémas XML ou des DTD.

© 2017-2023 Altova GmbH