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 :

[Xerces][XSD] Ignorer les noeuds <annotation/> lors d'un preparseGrammar()


Sujet :

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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut [Xerces][XSD] Ignorer les noeuds <annotation/> lors d'un preparseGrammar()
    Bonjour,

    Je développe une application qui doit calculer des métriques sur des XML Schemas.
    Pour cela j'utilise l'API Xerces pour manger mes schemas et obtenir un com.sun.org.apache.xerces.internal.xs.XSModel.
    Plus exactement j'utilise com.sun.org.apache.xerces.internal.parsers.XMLGrammarPreparser
    comme le suggère la FAQ de Xerces

    J'aimerais ignorer lors du preparse de ces grammaires les noeuds annotations car ceux-ci me font exploser la mémoire de la JVM sur certains XML Schemas très lourds en documentations (jxdm.xsd).

    Sur l'exemple suivant:
    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    <?xml version="1.0" encoding="UTF-8"?>
    <schema xmlns="http://www.w3.org/2001/XMLSchema" targetNamespace="http://www.yienyien.net/exemple" xmlns:tns="http://www.yienyien.net/exemple" elementFormDefault="qualified">
    	<element name="top" type="string">	
    		<annotation>
    			<documentation>Une documentation</documentation>
    		</annotation>
    	</element>
    </schema>
    j'aimerai que la méthode XMLGrammarPreparser.preparseGrammar() n'enregistre pas en mémoire la chaine "Une documentation". Il y a t-il une Feature à positionner qui m'aurait échappée ?

    Merci d'avance

  2. #2
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    Il y a une autre possibilité assez simple à mettre en oeuvre : faire un filtrage en aval par XSLT.

    Sinon, la feature http://apache.org/xml/features/validate-annotations permet d'activer ou de désactiver la validation des éléments compris dans les annotations par le schéma ; c'est peut-être cela qui provoque cette surcharge, mais comme c'est désactivé par défaut...
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    7
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 7
    Par défaut
    J'ai effectivement essayé de repréciser la non-validation des annotations grâce à la Feature que vous avez mentionné malheureusement sans succès.
    Je vais sûrement faire un prétraitement avec XSLT ou autre. Pour l'instant j'ai augmenté la mémoire virtuelle de ma JVM.

    Mais je trouve ca dingue qu'un fichier de 2 ou 3 Mo prenne près de 50Mo en mémoire (j'ai monitoré la JVM avec jconsole).

    Merci

Discussions similaires

  1. Réponses: 5
    Dernier message: 03/11/2006, 18h38
  2. Le linker ignore les fonctions non implémentées
    Par Rodrigue dans le forum C++Builder
    Réponses: 5
    Dernier message: 02/03/2005, 13h31
  3. Réponses: 3
    Dernier message: 27/07/2004, 12h01
  4. XSL ne parvient pas à lire les noeuds XML ??
    Par yahn dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 27/06/2004, 19h29

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