Merci bien pour vos r�ponses...

<R�ponse � Nicolas>
Effectivement ma DTD est locale, interne � ma webapp ...

<R�ponse � Fr�d�ric>
J'ai essay� ce que Tu m'as conseill�.
(mais il n'est pas du tout impossible que je m'y prennes mal)
Tu peux voir la fa�on dont je m'y suis pris dans le source de [GadgetLoader.java]

D'abord, voici la structure des ressources dans ma webapp :
[webapp]
  \dtd\
     - gadgets.dtd
  \WEB-INF\
      \classes\
        - GadgetLoader.class
           \xml\
             - gadgets.xml
 
  
Au niveau de la m�thode .resolveEntity() de mon EntityResolver, j'utilise le Public ID 
(et non le System ID).
j'ai essay� 3 trucs :

 1) return new 
InputSource(this.getClass().getClassLoader().getResourceAsStream("dtd/gadgets.dtd"));

 2) return(new InputSource("/dtd/gadgets.dtd"));

 3) return(new InputSource("dtd/gadgets.dtd"));

 4) return(new InputSource("gadgets.dtd")); 
         ... avec gadgets.dtd dans le m�me r�pertoire que gadgets.xml
         ... avec "gadgets.dtd" dans le System ID du DOCTYPE


R�sultats : � chaque fois, une irr�ductible insulte 
"org.jdom.input.JDOMParseException: Error on line 0: File.."        
 
 1) ... "file:///dtd/gadgets.dtd" not found
 2) ... (idem ci-dessus)
 3) ... "file:///C:/bea/wlserver6.1/config/domainU1/dtd/gadgets.dtd" not found.
 4) ... "file:///C:/bea/wlserver6.1/config/domainU1/gadgets.dtd" not found.

L� encore, il semble que l'objet InputSource responsable de "r�soudre" la DTD 
interpr�te le lien en absolu, et non pas en relatif.

( Rque : j'ai bien v�rifi� que je passais dans la m�thode .resolveEntity(), en loguant 
avec LOG4J )


Ci-joint les sources :
- [GadgetLoader.java] : la classe utilitaire java qui charge mes objets "gadgets" � 
partir du fichier XML
- [gadgets.xml] : le fichier des "gadgets"
- [gadgets.dtd] : la dtd � r�soudre (celle qui se cache dans le labyrinthe des 
ClassLoaders !!)


Je cherche du cot� de la m�thode setDocType() ....

"je suis tr�s d�sappoint� !" (Zorg, dans le "5i�me El�ment").
Merci d'avance.

<?xml version="1.0" ?>
<!DOCTYPE gadgets PUBLIC "systemeu.dtd.gadgets" "/gadgets.dtd">
<gadgets>
 <gadget>
  <order>1</order>
  <libelle>Jeu de 32 cartes � jouer U</libelle>
  <condit>15</condit>
  <htunitprice>0.82</htunitprice>
  <image>jeu_cartes_01.jpg</image>
 </gadget>
 <gadget>
  <order>2</order>
  <libelle>Casquette Base-Ball U</libelle>
  <color>bleu</color>
  <condit>10</condit>
  <htunitprice>1.16</htunitprice>
  <image>casquette_01.jpg</image>
 </gadget>
 <gadget>
  <order>6</order>
  <libelle>Sac � dos U</libelle>
  <condit>5</condit>
  <htunitprice>4.52</htunitprice>
  <image>sac_dos_01.jpg</image>
  <decline size="ALL">
   <enseigne type="HU"/>
   <enseigne type="SU"/>
   <enseigne type="MU"/>
  </decline>
 </gadget>
 <gadget>
  <order>8</order>
  <libelle>Tee-shirt U Taille L et XL</libelle>
  <color>blanc</color>
  <condit>1</condit>
  <htunitprice>2.26</htunitprice>
  <image>tee_shirt.jpg</image>
  <decline size="XL">
   <enseigne type="HU"/>
   <enseigne type="SU"/>
  </decline>
  <decline size="L">
   <enseigne type="U"/>
   <enseigne type="HU"/>
   <enseigne type="SU"/>
   <enseigne type="MU"/>
  </decline>
 </gadget>
</gadgets>

<?xml version="1.0" encoding="ISO-8859-1" ?>
<!ELEMENT gadgets (gadget)* >
<!ELEMENT gadget (order,libelle,color?,condit,htunitprice,ttcunitprice,image,decline*)>
<!ELEMENT order (#PCDATA)>
<!ELEMENT libelle (#PCDATA)>
<!ELEMENT color (#PCDATA)>
<!ELEMENT condit (#PCDATA)>
<!ELEMENT htunitprice (#PCDATA)>
<!ELEMENT image (#PCDATA)>
<!ELEMENT decline (enseigne)+>
<!ELEMENT enseigne EMPTY>
<!ATTLIST decline size (ALL|XS|S|M|L|XL|XXL) #REQUIRED>
<!ATTLIST enseigne type (U|HU|SU|MU) #REQUIRED>

Attachment: GadgetLoader.java
Description: Binary data

Répondre à