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 ;-)