Bonjour à tous,
je suis en train de développer une petite application pour ma formation JEE avec base de données Acsess, JDBC, DTD et XML. Je dois donc créer une DTD externe et un fichier XML en cliquant un bouton prévu à cet effet (voir la capture). Le but est de générer une DTD externe qui sera utilisée pour valider un fichier XML créé.
La DTD sera créée uniquement en tenant compte des valeurs retournées par la requête. Si la requête porte sur le nom et le prenom, la dtd ne doit contenir que le nom et le prénom etc. Pour cela, je travaille avec les métadonnées retournées par la requête en utilisant le code suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29 private void creerDTDActionPerformed(java.awt.event.ActionEvent evt) { File fichierDTD = new File("DTDExterne.dtd"); try { PrintStream ps = new PrintStream(fichierDTD); ps.println("<?xml version='1.0' encoding='UTF-8'?>\n"); int i; String txt = "<!ELEMENT "+rsmd.getTableName(WIDTH)+"("; for (i = 1; i<= rsmd.getColumnCount(); i++) { if(i!=1) { txt += ","; } txt += rsmd.getColumnName(i); } txt += ")>"; for (i=1; i<=rsmd.getColumnCount(); i++) txt += "\n<!ELEMENT "+rsmd.getColumnName(i)+"(#PCDATA)>"; ps.println(txt); } catch (Exception ex) { System.out.println("Erreur ........"+ex.getMessage()); } }//fin creerDTDActionPerformed
et voici ce que j'obtiens
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version='1.0' encoding='UTF-8'?> <!ELEMENT clients(idClient,Nom,Prenom,Adresse,Ville)> <!ELEMENT idClient(#PCDATA)> <!ELEMENT Nom(#PCDATA)> <!ELEMENT Prenom(#PCDATA)> <!ELEMENT Adresse(#PCDATA)> <!ELEMENT Ville(#PCDATA)>
Jusqu'à là tout va bien. Mais le problème c'est que la DTD doit tenir en compte des éléments nullables or Adresse est un élément nullable donc je voudrais obtenir ça:
C'est à dire, le "?" après "Adresse". Mais je n'arrive pas à le faire.
Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 <?xml version='1.0' encoding='UTF-8'?> <!ELEMENT clients(idClient,Nom,Prenom,Adresse?,Ville)> <!ELEMENT idClient(#PCDATA)> <!ELEMENT Nom(#PCDATA)> <!ELEMENT Prenom(#PCDATA)> <!ELEMENT Adresse(#PCDATA)> <!ELEMENT Ville(#PCDATA)>
Auriez-vous une idée?
Merci d'avance!
Partager