Générer un schéma xsd depuis un fichier xml
Pour cela nous allons utiliser l’outil trang, outil développé en Java, qui est donc multi-plateforme
A propos
- XML (Extensible Markup Language) Format de fichier permettant d’échanger des informations entre divers logiciels
- XSD (Schema XML) Définit la structure d’un fichier XML
Installation et utilisation de trang
Je vais expliquer ici son utilisation et l’installation sur la distribution Archlinux.
Nous installons trang avec l’outil Yaourt
yaourt -S trang
Pour le fichier d’exemple, j’ai utilisé le fichier XML fourni dans le tutoriel suivant http://www.allhtml.com/articles/detail/354
Copiez le fichier de l’ exemple suivant dans le fichier xml.xml
<?xml version="1.0"?>
<!-- Exemple issu du site http://www.allhtml.com/articles/detail/354 -->
<traducteur>
<mot>
<francais>Bleu</francais>
<english>Blue</english>
<italiano>Azzurro</italiano>
</mot>
<mot>
<francais>Rouge</francais>
<english>Red</english>
<italiano>Rosso</italiano>
</mot>
<mot>
<francais>Vert</francais>
<english>Green</english>
<italiano>Verde</italiano>
</mot>
</traducteur>
<!-- Exemple issu du site http://www.allhtml.com/articles/detail/354 -->
<traducteur>
<mot>
<francais>Bleu</francais>
<english>Blue</english>
<italiano>Azzurro</italiano>
</mot>
<mot>
<francais>Rouge</francais>
<english>Red</english>
<italiano>Rosso</italiano>
</mot>
<mot>
<francais>Vert</francais>
<english>Green</english>
<italiano>Verde</italiano>
</mot>
</traducteur>
Ensuite lancez la commande suivante:
trang xml.xml xml.xsd
Et voici le résultat
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="traducteur">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="mot"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mot">
<xs:complexType>
<xs:sequence>
<xs:element ref="francais"/>
<xs:element ref="english"/>
<xs:element ref="italiano"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="francais" type="xs:NCName"/>
<xs:element name="english" type="xs:NCName"/>
<xs:element name="italiano" type="xs:NCName"/>
</xs:schema>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="traducteur">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="mot"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="mot">
<xs:complexType>
<xs:sequence>
<xs:element ref="francais"/>
<xs:element ref="english"/>
<xs:element ref="italiano"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="francais" type="xs:NCName"/>
<xs:element name="english" type="xs:NCName"/>
<xs:element name="italiano" type="xs:NCName"/>
</xs:schema>