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

XML/XSL et SOAP Discussion :

Probléme de test des attributs avec XSLT et XPATH et faire le liens entre les attributs !!!


Sujet :

XML/XSL et SOAP

  1. #1
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut Probléme de test des attributs avec XSLT et XPATH et faire le liens entre les attributs !!!
    bonjour,

    voila j'ai un fichier xml qui contient plusieurs balises :

    *d'abord je récuper les valeurs de l'attribut specialization="UMLGeneralization.20 UMLGeneralization.21"de la balise <UML:Class> mais à condition d'utlisé 1 par 1.

    **puis je dois tester la balise <UML:Genralisation> dans se cas j'ai deux balises qui contient l'attribut xmi.id retournée par la fonction tokenize() losque j' l'utilise sur l'attributs spécialiazation de la balise <UML:Class>.

    *** si elle contient par exemple la 1er valeur retournée par tokenize() , je doit récuper la valeur de l'attribut child de la balise<UML:Generalisation>

    ****Aprés je cherche le xmi.id de la classe correspondante et j'affiche la valeur de l'attribut name.

    Code :
    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
    <UML:Class xmi.id="UMLClass.5" name="Animal" visibility="public" isSpecification="false" namespace="UMLModel.4" isRoot="false" isLeaf="false" isAbstract="false" specialization="UMLGeneralization.20 UMLGeneralization.21" isActive="false">
              <UML:Classifier.feature>
                <UML:Attribute xmi.id="UMLAttribute.6" name="Espese" visibility="private" isSpecification="false" ownerScope="instance" changeability="changeable" targetScope="instance" type="X.27" owner="UMLClass.5"/>
                <UML:Attribute xmi.id="UMLAttribute.7" name="Nom" visibility="private" isSpecification="false" ownerScope="instance" changeability="changeable" targetScope="instance" type="X.27" owner="UMLClass.5"/>
                <UML:Operation xmi.id="UMLOperation.8" name="getEspece" visibility="public" isSpecification="false" ownerScope="instance" isQuery="false" concurrency="sequential" isRoot="false" isLeaf="false" isAbstract="false" specification="" owner="UMLClass.5">
                  <UML:BehavioralFeature.parameter>
                    <UML:Parameter xmi.id="UMLParameter.9" name="" visibility="public" isSpecification="false" kind="return" behavioralFeature="UMLOperation.8" type="X.27"/>
                  </UML:BehavioralFeature.parameter>
                </UML:Operation>
                <UML:Operation xmi.id="UMLOperation.10" name="getNom" visibility="public" isSpecification="false" ownerScope="instance" isQuery="false" concurrency="sequential" isRoot="false" isLeaf="false" isAbstract="false" specification="" owner="UMLClass.5">
                  <UML:BehavioralFeature.parameter>
                    <UML:Parameter xmi.id="UMLParameter.11" name="" visibility="public" isSpecification="false" kind="return" behavioralFeature="UMLOperation.10" type="X.27"/>
                  </UML:BehavioralFeature.parameter>
                </UML:Operation>
              </UML:Classifier.feature>
            </UML:Class>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     <UML:Generalization xmi.id="UMLGeneralization.20" name="" visibility="public" isSpecification="false" namespace="UMLModel.4" discriminator="" child="UMLClass.12" parent="UMLClass.5"/>
            <UML:Generalization xmi.id="UMLGeneralization.21" name="" visibility="public" isSpecification="false" namespace="UMLModel.4" discriminator="" child="UMLClass.16" parent="UMLClass.5"/>

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Février 2005
    Messages
    351
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Février 2005
    Messages : 351
    Par défaut
    Salut noou18,

    Bon, je ne connais pas vraiment takennize()! Mais ne pourrais-tu pas faire la même en séparant tests? Ou si tu utilise ceci dans une requête xpath, tu tu peux effectuer des test multipliant les [...], comme ceci

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    (.../node[contains(tes1)][contains(test2)]...)
    Cédric

  3. #3
    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
    Je suis sûr qu'il y a un moyen simple quand on sait mieux se servir de Google que moi, mais si je devais me débrouiller je le ferais avec un petit template récursif :

    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
    <xs:template name="all-contain">
      <xs:param name="tokens"/>
      <xs:param name="containee"/>
      <xs:param name="index"/>
      <xs:choose>
        <xs:when test="$index &gt; count($tokens)">
          <xs:value-of select="true()"/>
        </xs:when>
        <xs:when test="contains($tokens[$index], $containee)">
          <xs:call-template name="all-contain">
            <xs:with-param name="tokens" select="$tokens"/>
            <xs:with-param name="containee" select="$containee"/>
            <xs:with-param name="index" select="$index + 1"/>
          </xs:call-template>
        </xs:when>
        <xs:otherwise><xs:value-of select="false()"/></xs:otherwise>
      </xs:choose>
    </xs:template>
    Qu'on appelle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xs:variable name="condition">
      <xs:call-template name="all-contain">
        <xs:with-param name="tokens" select="tokenize('tata titi toto', '\s+')"/>
        <xs:with-param name="containee" select=" 't' "/>
        <xs:with-param name="index" select="1"/>
      </xs:call-template>
    </xs:variable>
    Pour vérifier si tous les mots de 'tata titi toto' contiennent un 't'.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre éclairé
    Profil pro
    Ingénieur d'études et développement JAVA
    Inscrit en
    Mai 2008
    Messages
    202
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur d'études et développement JAVA
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 202
    Par défaut
    Merci , pour votre aide précieux, mais j'arrive toujours pas à resoudre mon pb.

Discussions similaires

  1. Réponses: 2
    Dernier message: 20/05/2010, 18h35
  2. Problème d'affichage des graphes avec Tomcat
    Par _Janu_ dans le forum BIRT
    Réponses: 11
    Dernier message: 20/09/2006, 15h30
  3. [phpMyAdmin] problème au niveau des heures avec phpMyAdmin
    Par arti2004 dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 3
    Dernier message: 13/06/2006, 22h05
  4. problème de backup des archivelogs avec RMAN
    Par 79Charles dans le forum Recovery Manager
    Réponses: 14
    Dernier message: 24/05/2005, 18h33
  5. Réponses: 4
    Dernier message: 23/07/2003, 13h07

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