IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Format d'échange (XML, JSON...) Java Discussion :

[DTD] Specifier une dtd avec le processeur xslt de JDOM [JDOM]


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut [DTD] Specifier une dtd avec le processeur xslt de JDOM
    Bonjour,

    Je suis en train d'essayer de transformer un fichier xml en un autre. Ma feuille de style semble fonctionner puisque j'obtiens le bon resultat en utilisant le processeur xslt inclus dans Firefox. J'ai essayer d'utiliser un processeur xslt JDOM avec 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
    void outputXSLT(org.jdom.Document doc,String fichierXSL)
    	{
    
    		org.jdom.Document resultat = new org.jdom.Document();
    
    		try
    		{
    			XSLTransformer transformer = new XSLTransformer(fichierXSL);
    
    			resultat = transformer.transform(doc);
    			
    			XMLOutputter outputter = new XMLOutputter(Format.getPrettyFormat());
    			outputter.output(resultat, new FileOutputStream("resultat.xml"));
    		}
    		catch(Exception e){
    			System.out.println(e);
    		}
    	}
    Je me retrouve avec l'exception suivante générée par la ligne en rouge

    ERROR: 'A DocType cannot be added after the root element'
    org.jdom.transform.XSLTransformException: Could not perform transformation: org.jdom.IllegalAddException: A DocType cannot be added after the root element

    Ma feuille de style xslt est la suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?xml version="1.0" encoding="ISO-8859-1"?>
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:output method="xml" encoding="ISO-8859-1" doctype-system="Toto.dtd" omit-xml-declaration = "no" indent="yes" />
     
     <xsl:template match="Tutu">
        <Titi>
     
        </Titi>
      </xsl:template>
    Lorsque j'enleve doctype-system="Toto.dtd" la transormation fonctionne correctement.

    Quelqu'un saurait-il comment faire apparaitre <!DOCTYPE Toto SYSTEM "Toto.dtd"> au debut du document de sortie ?

    Merci

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    J'y connais rien en doctype, mais il y a la méthode de la classe Document :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Document.setDocType(DocType docType)
              This will set the DocType declaration for this Document.
    http://www.jdom.org/docs/apidocs/org...g.jdom.DocType)

  3. #3
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    J'ai fait avec cette methode et ca marche.

    Merci

    Dommage de ne pouvoir specifier la dtd dans le fichier xslt et de devoir le specifier en dur dans le code java

  4. #4
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466

  5. #5
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Le truc c'est que specifier la dtd en xslt marche puisque le processeur xslt de Mozilla la prend bien en compte mais je n'y arrive pas avec le processeur JDOM.

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Une solution serait d'extraire les options définies dans la balise output du xsl et de les utiliser pour configurer le XMLOutputter de JDom.
    C'est chiant mais ça devrait être générique comme ça.

  7. #7
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Le probleme c'est des que je specifie la dtd dans le fichier xslt, il ne veut meme pas lancer le processus de transformation

  8. #8
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Par défaut
    Ah heu, oui j'avais oublié .
    Tu pourrais tenter un truc moche, du genre tu configures l'ouputer avec la balise output du xsl. Puis avant de lancer la transformation tu la supprime du documetn en mémoire (elle sert à rien dans ce contexte), tu fais la transformation puis la serialisation.
    Bon, j'avoue que c'est quand même louche que ce soit si compliqué.

  9. #9
    Membre averti
    Inscrit en
    Mars 2007
    Messages
    53
    Détails du profil
    Informations forums :
    Inscription : Mars 2007
    Messages : 53
    Par défaut
    Bon ben j'ai fait ce que tu m'as dit. C'est vrai que c'est crade mais au moins ca marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AJAX] dtd charger une page avec ajax
    Par bailamos dans le forum AJAX
    Réponses: 3
    Dernier message: 02/05/2010, 18h27
  2. [DTD] Créer une DTD à partir d'un fichier XML
    Par laadhar dans le forum Valider
    Réponses: 3
    Dernier message: 11/07/2006, 09h56
  3. [XML] specifier la DTD par une variable d'environnement
    Par xxiemeciel dans le forum Valider
    Réponses: 2
    Dernier message: 20/03/2006, 16h28
  4. [XML][DTD] Générer un XML avec une DTD ?
    Par elitost dans le forum Valider
    Réponses: 6
    Dernier message: 04/05/2005, 12h48
  5. [SAX] ]Validation d'un Document avec une DTD
    Par laguiff dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 18/02/2004, 09h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo