Je ne trouve pas que stoquer une information dans une table syst�me
accessible � toute la machine virtuelle soit tr�s pratique, cela dit, l'id�e
de stoquer la valeur dans un contexte global me semble bonne. J'ai r�ussi
n�anmoins � r�soudre mon probl�me d'une fa�on qui me pla�t un peu plus : en
d�finissant un nouveau EntityResolver qui, une fois associ� au parseur, me
permet de faire exactement ce que je veux, � savoir :
- modifier � loisir le systemId de l'appel � la DTD
- g�rer moi-m�me la cr�ation de l'InputSource de la DTD et rester ma�tre,
ainsi, des entr�es et des sorties :
DOMParser parser = new DOMParser();
parser.setEntityResolver(
new EntityResolver()
{
public InputSource resolveEntities(String publicId, String
systemId)
{
// mon traitement
}
}
);
-----Message d'origine-----
De : Erik Mazoyer [mailto:[EMAIL PROTECTED]]
Envoy� : vendredi 11 octobre 2002 11:21
� : '[EMAIL PROTECTED]'
Objet : RE: chemin vers une DTD dans Xerces
> je travaille avec un syst�me de documents XML qui sont tous
> adress�s par des chemins relatifs � un r�pertoire unique suppos� connu au
> moment de l'ex�cution.
Au contraite, le cas est simple.
Au lancement de ton application tu trouve le r�pertoire (passage de
param�tre ou autre solution).
Avec ton File tu en extrais une URL (.toURL()) et tu place sa forme String
(.toExtrenalForm()) dans une propri�t� System
(System.setProperty("fr.masoci�t�.monclien.monprojet$xmlSourceFolder",monUrl
EnString);
Quand tu lis un fichier en traitement, tu as juste � �crire
InputSource.setSystemId(System.getProperty("fr.masoci�t�.monclien.monprojet$
xmlSourceFolder");
Si tes fichiers incluent d'autre fichiers � leur tour et que ces derniers
doivent aussi faire r�f�rence � ce dossier unique m�me s'ils sont plac�
n'importe ou sur le disque, tu d�finis un org.xml.sax.EntityResolver en
ajoutant :
InputSource.setSystemId(System.getProperty("fr.masoci�t�.monclien.monprojet$
xmlSourceFolder");
sur l'inputsource trouv�.
Et tu indiques � ton parser l'EntityResolver � utiliser.
A+
--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l [EMAIL PROTECTED]
-----Message d'origine-----
De : Zeljko VELAJA [mailto:[EMAIL PROTECTED]]
Envoy� : vendredi 11 octobre 2002 11:04
� : [EMAIL PROTECTED]
Objet : RE: chemin vers une DTD dans Xerces
Tr�s clair. Mais le probl�me, c'est que c'est encore un peu trop restrictif
encore : je travaille avec un syst�me de documents XML qui sont tous
adress�s par des chemins relatifs � un r�pertoire unique suppos� connu au
moment de l'ex�cution. Il me faudrait en fait faire comprendre au parseur
que c'est par rapport � ce r�pertoire qu'il doit r�soudre les URL. Se baser
sur l'URL courante peut n�anmoins aider dans un premier temps : j'essaierai.
-----Message d'origine-----
De : Erik Mazoyer [mailto:[EMAIL PROTECTED]]
Envoy� : vendredi 11 octobre 2002 09:47
� : '[EMAIL PROTECTED]'
Objet : RE: chemin vers une DTD dans Xerces
Ce qu'il te faut, c'est dire � ton "org.xml.sax.InputSource" � quelle URL,
"elle" fait r�f�rence.
InputSource source = new InputSource(...);
source.setSystemId(monUrl.toExternalForm());
Le syst�me r�soudra alors les inclusions avec le SystemId de ton fichier
c'est � dire l'url. Il faut donc que tes fichiers externes aient des urls
relatives � l'URL du fichier contenant.
C'est clair ???
--------------------------------------------------------------------
Erik Mazoyer, Chef de projet
HyperOffice
6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
T�l. 01 41 96 96 76
Fax 01 41 96 96 77
M�l [EMAIL PROTECTED]
-----Message d'origine-----
De : Zeljko VELAJA [mailto:[EMAIL PROTECTED]]
Envoy� : jeudi 10 octobre 2002 17:35
� : [EMAIL PROTECTED]
Objet : chemin vers une DTD dans Xerces
Une question pour les mordus de SAX et de DOM :
j'utilise la classe DOMParser de Xerces pour parser un document XML. Dans ce
document je veux inclure un DOCTYPE qui importe une DTD d�clarant un certain
nombre d'entit�s. Je veux pouvoir utiliser une URL relative comme
identifiant syst�me, genre :
<!DOCTYPE mon_element_document SYSTEM "URI relative vers ma DTD">
Mon probl�me est le suivant : comment faire comprendre au parseur XML
comment r�soudre l'URL relative ? Par d�faut, il semble se baser sur le
premier chemin d�clar� dans le CLASSPATH. Or je voudrais pouvoir sp�cifier
moi-m�me le chemin de base qu'il doit prendre en compte (ind�pendamment du
CLASSPATH, bien entendu). Comment puis-je faire ? Mieux, existe-t-il un
moyen pour lui fournir le flux de la DTD par mes propres moyens ?