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

XSL/XSLT/XPATH XML Discussion :

[xpath] Requête sur le nom des attributs sans casse


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre régulier Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Points : 93
    Points
    93
    Par défaut [xpath] Requête sur le nom des attributs sans casse
    Bonjour tout le monde,

    Pour mon appli, j'utilise les requêtes XPATH pour chercher un noeud avec certains attributs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /*[@DtdVersion and @DtdRelease]
    Malheusement, la norme a changé :
    DtdRelease devient dtdRelease ;
    DtdVersion devient dtdVersion.

    Aussi, je souhaiterai obtenir une requête XPATH qui cherche un noeud avec les mêmes attributs sans s'occuper de la "case" (majuscule / miniscule)

    Une idée ?

    Merci et bonne semaine,

    Fred

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    284
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 284
    Points : 349
    Points
    349
    Par défaut
    Bien fastidieux, mais bon

    XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <document>
    <Test Att="1">arg</Test>
    </document>
    XSL:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:template match="document">
    <xsl:if test="Test[translate(name(@*), 'abcdefghijklmnopqrstuvwxyz', 'ABCDEFGHIJKLMNOPQRSTUVWXYZ') = 'ATT']">Super !</xsl:if>
    </xsl:template>
    </xsl:stylesheet>

  3. #3
    Membre régulier Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Points : 93
    Points
    93
    Par défaut
    Merci Nicolas

    Bon, le truc, c'est que j'utilise les requêtes XPATH avec l'API Java Xalan.
    Donc, je ne peux pas effectuer de requêtes XSL avant.

    Pour l'instant, je récupère tous les champs de premier niveau possédant des attributs et je réalise le filtre en Java :
    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
    		Node node = XPathAPI.selectSingleNode(doc, "/*[@*]");
    		if (node == null) {
    			throw new ParseGrammarException(ParseGrammarException.NOT_CONTAIN_DTD_ATTRIBUTES);
    		}
    		int lenght = node.getAttributes().getLength();
    		if (lenght != 2) {
    			throw new ParseGrammarException(ParseGrammarException.NOT_CONTAIN_2_DTD_ATTRIBUTES);
    		}
    		for (int i = 0; i < node.getAttributes().getLength(); i++) {
    			Node attribut = node.getAttributes().item(i);
    			if (attribut.getNodeName().equalsIgnoreCase("dtdVersion")) {
    				version = attribut.getNodeValue();
    			} else if (attribut.getNodeName().equalsIgnoreCase("dtdRelease")) {
    				release = attribut.getNodeValue();
    			}			
    		}
    Mais est-ce possible de faire de faire une requêtes XPATH pour ne pas passer par ce traitement ?

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

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Il y aurait une solution, passer par un filtre SAX (org.xml.sax.helpers.XMLFilterImpl) qui s'intercalerait entre un handler SAX et l'arbre DOM par lequel tu fais tes requêtes XPath. Ce filtre ferait la conversion de casse, et aurait l'avantage de ne pas t'obliger à modifier le code en aval.

  5. #5
    Membre régulier Avatar de fedfil
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    91
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 91
    Points : 93
    Points
    93
    Par défaut
    salut,

    oula, ça semble pas simple tout ça

    je te remercie de ton aide mais je pense garder ma "petite verrue"

    @+ et bonne continuation !

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

Discussions similaires

  1. [MySQL] Formulaire de recherche: Requête sur l'ensemble des attributs d'une base de données
    Par arthur.moreau dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 08/07/2014, 09h09
  2. [ODBC] requête :comment on traite les noms des attributs comportant d'espace
    Par razily dans le forum PHP & Base de données
    Réponses: 1
    Dernier message: 14/05/2010, 19h58
  3. [AC-2002] Modifier les noms des tables sans casser les requêtes
    Par gandalf20000000 dans le forum Modélisation
    Réponses: 5
    Dernier message: 07/04/2010, 21h30
  4. récupérer le nom des attributs d'une classe
    Par danyboy85 dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 22/06/2006, 11h42
  5. Réponses: 5
    Dernier message: 06/04/2006, 11h46

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