Zi Youltimayte Castor gaïde 2, Zi automatizaïcheun !

1 Introduction

Dans le précédent document nous avons vu une bonne partie de Castor.
Ici nous allons voir, comment tout faire automatiquement… DTD -> XSD -> Sources -> Mapping

1.1 Pré-requis

Une DTD.

1.2 C'est tout ?

Oui.

1.3 Est-ce-que ça marche ?

Oui mais il faudrait arréter de poser des questions maintenant, ça suffit !

2 Comment faire

C'est hyper compliqué, faut vraiment s'accrocher…

2.1 DTD exemple

Une DTD simple, qui reprend l'exemple de Zi Youltimayte Castor gaïde ! :

<!ELEMENT Cave (Bouteille*) >
<!ATTLIST Cave bouteilleIndex CDATA #REQUIRED > <!ELEMENT Bouteille (#PCDATA)>

<!ATTLIST Bouteille id CDATA #REQUIRED
nom CDATA #IMPLIED
annee CDATA #IMPLIED
quantite CDATA #IMPLIED
type CDATA #IMPLIED
format CDATA #IMPLIED >


2.2 Générer le XSD de mapping

En ligne de commande :

[root@neptune]# java -cp .:commons-logging.jar:castor.jar:xerces.jar org.exolab.castor.xml.dtd.Converter cave.dtd cave.xsd ISO-8859-1

Ici un beau fichier XSD a dû être créé :

<?xml version="1.0" encoding="UTF-8"?>


<schema xmlns="http://www.w3.org/2001/XMLSchema">
<element name="Bouteille">
<complexType mixed="true">
<attribute name="annee" type="string"/>
<attribute name="nom" type="string"/>
<attribute name="type" type="string"/>
<attribute name="quantite" type="string"/>
<attribute name="format" type="string"/>
<attribute name="id" type="string" use="required"/>
</complexType>
</element>



<element name="Cave">
<complexType>
<sequence>
<element ref="Bouteille" minOccurs="0" maxOccurs="unbounded"/>
</sequence>
<attribute name="bouteilleIndex" type="string" use="required"/>
</complexType>
</element>



</schema>


2.3 Générer les sources Java

Bon, on va partir du fichier XSD, pour générer les sources Java que l'on compile ensuite :

[root@neptune]# java -cp .:commons-logging.jar:castor.jar:xerces.jar org.exolab.castor.builder.SourceGenerator -i cave.xsd -package mon.dossier.truc.muche -verbose
Creating classes for: Cave
Creating classes for: Bouteille


[root@neptune]# javac -classpath .:castor.jar:xerces.jar mon/dossier/truc/muche/*.java


A ce stade vos sources java sont générées et les répertoires de package aussi…

2.4 Générer le fichier de mapping

Il ne reste plus qu'à générer le fichier de mapping :

[root@neptune]# java -cp .:commons-logging.jar:castor.jar:xerces.jar org.exolab.castor.tools.MappingTool -i mon.dossier.truc.muche.Cave -o mapping.xml

 

3. Conclusion

Castor rulez… Encore ;-)