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

Java Discussion :

Validation W3C avec xerces


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut Validation W3C avec xerces
    Bonjour, je suis en train de développer une application lourde dont l'une des fonctions et d'analysé le contenu d'une page html et d'en vérifier sa validité au W3C.
    Dans un premier temps je charge le contenu d'une page dont je donne l'adresse puis je l'enregistre dans un fichier html temporaire pour l'analyser.

    Pour cela j'utilise xerces dont voici le code que j'utilise (pour le moment)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    DOMParser dp = new DOMParser();
    dp.setFeature("http://xml.org/sax/features/validation",false);
    dp.setFeature("http://apache.org/xml/features/dom/include-ignorable-whitespace",false);
    dp.parse("test.html");
    Ma page de test.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" >
    <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
    <head><title>Titre</title></head>
    <body style="text-align:center; background-color:#000">
    <a href="lienr"><img src="/design/index.png" style="border:none"/></a>
    </body>
    </html>
    Le soucis est que lorsque j'ai la ligne du doctype j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
    Alors que j'arrive à télécharger la dtd quand j'utilise mon navigateur web.

    Si je retire cette ligne pour la dtd je peux facilement parser ma page web et obtenir les infos que je veux.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Citation Envoyé par n1k00 Voir le message
    Le soucis est que lorsque j'ai la ligne du doctype j'ai cette erreur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    java.io.IOException: Server returned HTTP response code: 503 for URL: http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd
    Alors que j'arrive à télécharger la dtd quand j'utilise mon navigateur web.
    Euh, ah bon ? Tu as de la chance, moi ça foire 9 fois sur 10.

    Ce qui n'a rien d'étonnant d'ailleurs, vu que c'est la DTD indiquée dans chaque document XHTML transitionnel du monde, et que des millions de parseurs s'amusent donc chaque seconde à aller la redemander, parce que par défaut ils vont chercher toutes les DTD externes qu'on leur indique.
    Rien d'étonnant à ce que le serveur du W3C ne tienne pas la charge.

    Vilains parseurs, vilains ! Au lit sans manger !

    Profite déjà du fait d'arriver à la télécharger, pour la sauvegarder quelque part sur ton disque dur. Puis, inclus-la comme ressource de ton programme (comme avec une icône ou un fichier de conf.)
    Puis, implémente une classe EntityResolver, qui à l'appel de resolveEntity où le systemId est "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd", renvoie un InputSource construit avec un InputStream sur la version de cette DTD incluse dans ton programme : comme ça pas de connexion réseau et tout roule.
    Tant que tu y es, fais ça pour toutes les DTDs que tu risques d'utiliser.
    Enfin, indique à ton Parser d'utiliser cet EntityResolver.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut
    J'y avais penser au coup de télécharger les dtd nécessaire pour le transitionnal ou le strict mais j'aurais aimé quelque chose de plus générique pouvoir prendre en compte toutes les dtd possible

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 582
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 582
    Par défaut
    Ben -_-°. Le problème est que le serveur qui héberge cette DTD est surchargé.

    À la rigueur tu peux essayer d'aller fouiller dans le cache de Google au lieu de récupérer la DTD à l'URL indiquée, mais comme solution systématique je vois que ça.

    (Et puis, il faut croire que je suis seul au monde, mais je suis violemment opposé à l'idée que le monde entier, à chaque fois qu'une page XHTML est parsée, aille rechercher la même ressource réseau sur le même serveur au même endroit. Ça s'appelle un DDoS.)
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut
    Après recherche y a pas tant de fichier que ca à récupérer http://www.w3.org/TR/xhtml1/dtds.html . Je pense que je vais opter pour ta solution.

    Et comme toi je trouve ça con que pour un site internet les dtd soit chargé continuellement.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2009
    Messages
    59
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 59
    Par défaut
    C'est bon çà fonctionne en ayant les dtd en local maintenant reste plus qu'à faire en sorte que xerces accepte de lire mes fichiers même si y a des erreurs (Fatal errors ou Errors) histoire que le traitement soit fait quand même.

Discussions similaires

  1. [W3C] validation W3C avec un formulaire
    Par Invité dans le forum Balisage (X)HTML et validation W3C
    Réponses: 3
    Dernier message: 13/02/2008, 13h31
  2. [W3C] Problème validation w3c avec html/javascript
    Par mademoisellem dans le forum Balisage (X)HTML et validation W3C
    Réponses: 22
    Dernier message: 31/01/2008, 16h19
  3. pb validation w3c avec js
    Par Emcy dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 02/02/2007, 16h36
  4. Validation DOM avec Xerces et StackOverfFlow exception
    Par safae dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 27/11/2006, 13h09
  5. [CSS] Pb De Validation W3c Avec Ma Feuille Css
    Par fredylover dans le forum Mise en page CSS
    Réponses: 11
    Dernier message: 08/05/2006, 18h15

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