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] pour plusieurs fichiers XML


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut [XSLT] pour plusieurs fichiers XML
    Bonjour,

    Je ne crois pas avoir deja vu de fil sur ce theme (mais il existe peut etre, je peux me tromper) et les 6 tutos XSLT que j'ai consulté n'abordent pas ce point.

    Je cherche a transformer du XML en belles pages web, j'ai opté pour XSLT.
    Mon problème est que l'un de mes fichiers XML reference des données dans d'autres fichiers, pour faire simple, ca donne un truc de ce genre :

    Fichier rubrique.xml
    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" ?>
    <?xml-stylesheet type="text/xsl" href="rubrique.xslt"?>
     
    <TRAITE ID="TI052">
    	<TITRE>Titre de la rubrique</TITRE>
    	<DOSSIER REFID="AF33" FILE="AF33.xml"/>
    	<DOSSIER REFID="AF35" FILE="AF35.xml"/>
    </TRAITE>
    Puis, les fichiers référencés sont dans des dossiers a leur nom. On retrouve donc
    AF33/AF33.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DOSSIER ID="af33">
    	<TITRE>Titre de l'article AF33</TITRE>
    </DOSSIER>
    AF35/AF35.xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <DOSSIER ID="af35">
    	<TITRE>Titre de l'article AF35</TITRE>
    </DOSSIER>
    Le but du jeu pour moi est d'afficher une liste de toutes les rubriques avec un lien vers les articles qu'elles décrivent :

    Titre de la rubrique
    - Titre de l'article AF33
    - Titre de l'article AF35

    J'ai commencé la transformation XSL la semaine dernière, et je ne concois pas bien comment taper dans d'autres fichiers que celui courant.
    Pour info, j'ai inclus dans mon fichier XML de base un "lien" vers le fichier XSLT permettant de le transformer.

  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
    pour moi c'est le même problème qu'ici
    http://www.developpez.net/forums/d82...l-parsing-xsl/

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    Vui, ca a l'air similaire, je vais etudier ca.

  4. #4
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    Bon, en fait, il y a une petite différence qui m'empêche d'utiliser la solution trouvée par ElSegador : je ne dispose pas du chemin d'accès aux fichiers XML secondaires. Je n'ai que leur nom et le nom de leur dossier.

    Donc, je réitere : comment atteindre des données contenues dans des fichiers dont je n'ai qu'une description partielle :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <DOSSIER REFID="AF33" FILE="AF33.xml" />
    Le chemin relatif est :
    ../articles/AF33/AF33.xml

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2002
    Messages
    118
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2002
    Messages : 118
    Points : 71
    Points
    71
    Par défaut
    OK, c'etait tendu mais j'ai une approche qui semble fonctionnelle :

    Je me suis servi d'une variable pour stocker le chemin vers mon fichier.
    Si ca peut servir a qq1, voila ma soluce :

    rubriques.xml :le fichier XML principal. Il contient la référence vers les autres XML dans les balises DOSSIER
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <?xml-stylesheet type="text/xsl" href="rubrique.xslt"?>
     
    <TRAITE ID="TI052" CODE="AFM">
    	<TITRE>Mathématiques pour l'ingénieur</TITRE>
    	<DOSSIER REFID="AF33" FILE="AF33.xml"/>
    	<DOSSIER REFID="AF35" FILE="AF35.xml"/>
    	<DOSSIER REFID="AF37" FILE="AF37.xml"/>
    	...
    </TRAITE>
    Un des autres fichiers XML (d'ou je doit récupérer les titres pour les afficher en lien)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <DOSSIER ID="af33">
    	<TITRE>Langage des ensembles et des structures</TITRE>
    	...
    </DOSSIER>
    rubrique.xslt : le XSL appellé par le XML principal
    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
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
     
    <xsl:template match="/">
    	<!-- Afficher le titre de la rubrique -->
    	<xsl:value-of select="/TRAITE/TITRE"/>
     
    	<!-- Parcours des rubriques -->
    	<xsl:apply-templates/>
    </xsl:template>
     
     
    <!-- Pour chaque rubrique -->
    <xsl:template match="TRAITE">
    	<!-- Afficher le titre -->
    	<br /><xsl:value-of select="TITRE"/>
     
    	<!-- parcours des articles (les balises DOSSIER) -->
    	<xsl:apply-templates select="DOSSIER[@REFID]"/>
    </xsl:template>
     
     
    <!-- Pour chaque article -->
    <xsl:template match="DOSSIER[@REFID]">
    	<!-- Mettre le chemin relatif vers le fichier de l'article dans une variable "filepath" -->	
    	<xsl:variable name="filepath">
    		<xsl:value-of select="concat('../articles/d_', @REFID, '/', @FILE)" />
    	</xsl:variable>
     
    	<!-- Afficher lien vers l'article -->
    	<xsl:element name="a">
    		<xsl:attribute name="href">
    			<xsl:value-of select="$filepath" />
    		</xsl:attribute>
    		<!-- Recuperation du titre de l'article avec la fonction document() a laquelle je fourni ma variable en paramètre -->
    		<xsl:value-of select="document($filepath)//DOSSIER/TITRE" />
    	</xsl:element>
    </xsl:template>

Discussions similaires

  1. [JDOM] Parser plusieurs fichiers xml pour en faire 1
    Par Mygush dans le forum Format d'échange (XML, JSON...)
    Réponses: 11
    Dernier message: 05/07/2007, 16h15
  2. Réponses: 3
    Dernier message: 24/04/2007, 11h39
  3. [XSLT] transfo d'un fichier XML en plusieurs fichiers XML
    Par doudou_rennes dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 28/11/2006, 12h01
  4. [XML - XSLT] Plusieurs xslt pour un fichier xml
    Par Laure888 dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 17/03/2006, 15h16
  5. [XSLT] Diviser un fichiers xml en plusieurs pages html
    Par thibaut06 dans le forum XSL/XSLT/XPATH
    Réponses: 8
    Dernier message: 07/04/2005, 16h56

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