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 :

[XSLT][XPath] XML utilisant plusieurs namespace


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut [XSLT][XPath] XML utilisant plusieurs namespace
    Bonjour,

    J'ai un fichier XML dans lequel j'utilise 3 espaces de nom:
    X
    Y
    Z
    le xml schema de chacun d'eux est local
    j'ai crée une page xslt pour transformer mon fichier xml->xml et je voulais extraire les toutes les balises avec préfixe Y.
    quand je fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xsl:value of select="//Y:blabla"
    ca ne marche pas
    quand j'utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //log:bla1[@id=1]//child::node()[position()=2]/child::node()[position()=2]"
    il me renvoie la balise dont j'ai besoin sachant que la balise blabla se trouve en deuxieme position des fils de bla1

    j'ai essayé avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     //X:bla1 ca marche mais avec //Z:blablabla
    ca ne marche pas aussi
    Merci

  2. #2
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    tu vas devoir redéfinir des préfixes pour tes namespaces dans ton xslt et les utilisé dans tes xpath comme spécifié dans la FAQ


    Problème de transformation XSLT avec un document xml dont les balises sont dans un namespace particulier

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    effectivement , j'ai essayé de faire comme dans FAQ mais ça ne marche toujours pas , et quand j'affiche tous les éléments , les éléments de X Y et Z s'affichent

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Est-ce que tu pourrais poster ton xml et ton xslt, ou au moins la partie qui pose problème s'il te plait ?

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut

    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
    19
     
    <xmlns:log="file:/C:/CHEMIN"
    	xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    	xmlns:tm="file:/C:CHEMIN" 
    	xmlns:sp="file:/C:CHEMIN"
    	xsi:schemaLocation="file:/C:file:/C:CHEMIN  
            file:/C:file:/C:CHEMIN/logique.xsd"
    	file:/C:file:/C:CHEMIN/TimeML.xsd     
    	file:/C:file:/C:CHEMIN/SpatialML.xsd>
     
    <log:paragraphes id="1">
       <sp:PLACE id="p11" latLong="42.998276, -0.600321">
    	<sp:SIGNAL id="s12">604 m</sp:SIGNAL>
    	   <tm:TIMEX3 tid="t2" type="DURATION" value="PT15M"> 00h15         </tm:TIMEX3>
    	<log:sous_titre id="1">Francois Sarraillé</log:sous_titre>
       </sp:PLACE>
    	<log:para> Cet itinéraire utilise en première partie le chemin de <sp:PLACE id="p13" type="ROAD">St-Jacques de Compostelle</sp:PLACE> (<sp:PLACE id="p14" type="ROAD">GR 653</sp:PLACE>) jusqu'à <sp:PLACE id="p15" type="PPL">Accous</sp:PLACE> puis divers PR			balisés. Depuis la place de la <sp:PLACE id="p16" type="FAC" form="NOM">mairie</sp:PLACE> de	<sp:PLACE id="p18" type="PPL">Bedous</sp:PLACE>, 
    <sp:LINK id="l1" source="p16"	target="p18" linkType="IN"/>longer la façade sud de l'église pour accéder à une nouvelle place (remarquer le château à tourelles qui rappelle le souvenir de Pierre de Laclède fils				de Bedous, qui partit aux <sp:PLACE id="p19" type="CONTINENT"> Amériques </sp:PLACE> et fonda <sp:PLACE id="p20" type="PPLA">Saint-Louis</sp:PLACE> en <sp:PLACE id="p22"				> Louisiane </sp:PLACE> <sp:LINK id="l2" source="p20" target="p22" linkType="IN"/>). Contourner un fronton par la gauche et suivre une ruelle à l'est pour emprunter un chemin gravillonné entre deux murettes	de pierres. </log:para>
    </log:paragraphes>
    et voici mon XSLT qui marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <xsl:value-of
    									select="//log:paragraphes[@id=1]//child::node()[position()=2]/child::node()[position()=2]"/>
    mais moi je veux extraire toutes les balises de types spLACE et non pas que le deuxieme fils

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    en précisant que chemin est local se trouvant dans le même répertoire
    et que dans ma feuille xslt je veux faire un truc du genre <xsl:value of select="//spLACE" et que le chemin et la déclaration des xmlns dans la feuille xslt est déjà faite

    (j'utilise SpatialML et TimeML en local car j'ai téléchargé leur spécification en local , j'ai pas trouvé le chemin officiel

  7. #7
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    déjà c'est normal que dans ce que tu me donne il y ait trois prefixe pour le même namespace ?

  8. #8
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    J'ai modifié ton xml pour qu'il soit coherent,les namespace était "bizarre" et il y avait des erreurs

    le xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-stylesheet type="text/xsl" href="D:\Mes documents\testxml\ns.xslt"?>
    <racine xmlns:log="X" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tm="Y" xmlns:sp="Z">
    	<log:paragraphes id="1">
    		<sp:PLACE id="p11" latLong="42.998276, -0.600321">
    			<sp:SIGNAL id="s12">604 m</sp:SIGNAL>
    			<tm:TIMEX3 tid="t2" type="DURATION" value="PT15M"> 00h15         </tm:TIMEX3>
    			<log:sous_titre id="1">Francois Sarraillé</log:sous_titre>
    		</sp:PLACE>
    		<log:para> Cet itinéraire utilise en première partie le chemin de <sp:PLACE id="p13" type="ROAD">St-Jacques de Compostelle</sp:PLACE> (<sp:PLACE id="p14" type="ROAD">GR 653</sp:PLACE>) jusqu'à <sp:PLACE id="p15" type="PPL">Accous</sp:PLACE> puis divers PR			balisés. Depuis la place de la <sp:PLACE id="p16" type="FAC" form="NOM">mairie</sp:PLACE> de	<sp:PLACE id="p18" type="PPL">Bedous</sp:PLACE>, 
    <sp:LINK id="l1" source="p16" target="p18" linkType="IN"/>longer la façade sud de l'église pour accéder à une nouvelle place (remarquer le château à tourelles qui rappelle le souvenir de Pierre de Laclède fils				de Bedous, qui partit aux <sp:PLACE id="p19" type="CONTINENT"> Amériques </sp:PLACE> et fonda <sp:PLACE id="p20" type="PPLA">Saint-Louis</sp:PLACE> en <sp:PLACE id="p22"> Louisiane </sp:PLACE>
    			<sp:LINK id="l2" source="p20" target="p22" linkType="IN"/>). Contourner un fronton par la gauche et suivre une ruelle à l'est pour emprunter un chemin gravillonné entre deux murettes	de pierres. </log:para>
    	</log:paragraphes>
    </racine>
    et je n'ai aucun problème avec ce xslt
    Code : 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"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:a1="X" xmlns:a2="Y" xmlns:a3="Z">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:template match="/">
    		<xsl:for-each select="//a3:PLACE">
    			<xsl:value-of select="."/>;
    	</xsl:for-each>
    	</xsl:template>
    </xsl:stylesheet>

  9. #9
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    non c'est une faute
    CHEMIN/logique.xsd pour le log
    CHEMIN/SpatialML.xsd pour le sp
    CHEMIN/TimeML.xsd pour le tm

  10. #10
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    mais dans ce que t'as modifié y a nulle part ou tu déclares où se trouvent les xml schema des a1 a2 a3?

  11. #11
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Cette partie n'a rien à voir avec la transformation XSLT.
    D'ailleurs normalement on ne fait apparaitre qu'un seul xml schema pour valider , c'est ce que je trouve bizarre dans ton xml.
    C'est dans le schema que tu appelles dans ton XML que tu vas géré l'inclusion des autres xml schema.
    De plus la déclaration des namespace n'ont rien à voir avec la validation, si il arrive qu'on y déclare des XSD ou DTD c'est purement informatif, afin que la personne qui récupère le fichier ait une idée des balises, le contenu d'un xmlns n'est pas utilisé dans un traitement, il s'agit juste d'une "signature" pour différencier les balises

  12. #12
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    en fait ce que je voulais faire c'est declarer :
    un xml shema pour la logique qui est log
    un xml schema pour le spatial qui est sp
    et un autre pour le temporel qui tm .

    on m'impose de faire le xml schema pour la logique et d'inclure aussi les deux xml schema du spatialML et du TimeML (j'ai téléchargé la specification sur internet) les inclure directement dans un fichier xml .

    le problème que j'avais est de pouvoir seulement extraire les spLACE avec ma feuille XSLT c'est pour ça que j'ai posté mon problème sur ce forum.
    j'espere que je ne fait pas du n'importe quoi

  13. #13
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Je pense que ton pb vient plutot de la notion de validation et de namespace

    Pour ce que je peux constater tes balise sp et tm sont incluses dans les log donc ton ta racine devra ressembler à ça (elle ne s'appelle certainement pas racine mais je ne peux deviner le nom )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <racine xmlns:log="X" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:tm="Y" xmlns:sp="Z" xsi:schemaLocation="TON_CHEMIN/logique.xsd">
    Dans ton logique.xsd tu devras gérer l'inclusion des deux autres xml schema
    Pour ce qui est des namesapce, quand on écrit xmlns:log="X , log n'est pas le namespace, c'est X

    les namespace qui remplacent Y et Z tu devrais les trouver dans les xml schema qui correspondent mais ce n'est pas le chemin de tes xsd que tu dois mettre.

    Pour X, soit on t'a imposé un namespace qui doit apparaitre dans ton xml schema, soit tu n'es même pas obligé d'en utilisé.

  14. #14
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    11
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Ok un Grand merci je vais essayer de m'en sortir et si j'y arrive pas je serai de retour

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

Discussions similaires

  1. [DOM] Création tag XML avec plusieurs namespace URI
    Par Bobble dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 25/11/2010, 16h07
  2. Réponses: 1
    Dernier message: 30/05/2007, 20h12
  3. [xslt][xpath]Utilisation des attributs XML
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/05/2007, 12h42
  4. [XSLT] un xml pour plusieurs xsl
    Par vodasan dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 29/09/2006, 11h44

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