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 :

Node, sous-node et tableau + Liste


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Femme Profil pro
    Electrinicien
    Inscrit en
    Mai 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France

    Informations professionnelles :
    Activité : Electrinicien
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Mai 2012
    Messages : 2
    Points : 3
    Points
    3
    Par défaut Node, sous-node et tableau + Liste
    Bonjour à tous,
    Je rencontre actuellement un petit soucis que je n'arrive pas à résoudre en parsant mes fichiers XML.

    Voici mon 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    <SousChapitre>
        <Titre>
            <Paragraphe>En cas de modification de votre propriété ou de nouvelle construction</Paragraphe>
        </Titre>
        <Paragraphe>
            Vous devez adresser une déclaration au <LienInterne LienPublication="R15019" type="Local personnalisable" audience="Professionnels">centre des finances publiques du lieu de situation des biens</LienInterne> dans les cas suivants*:
        </Paragraphe>
        <Liste type="puce">
            <Item>
              <Paragraphe>réalisation de nouvelles constructions,</Paragraphe>
            </Item>
            <Item>
              <Paragraphe>transformation, restauration ou aménagements de constructions existantes.</Paragraphe>
            </Item>
        </Liste>
        <Paragraphe>La déclaration est à adresser dans les 90 jours de l'achèvement de la construction ou de la réalisation définitive du changement de consistance ou d'affectation.</Paragraphe>
        <Paragraphe>Selon la nature du changement à déclarer, vous devez remplir les formulaires suivants (téléchargeables sur cette page ou sur le site des Impôts et disponibles dans les centres des finances publiques et les mairies) :</Paragraphe>
        <Tableau>
          <Colonne largeur="50" type="normal"/>
          <Colonne largeur="50" type="normal"/>
             <Rangée type="header">
                <Cellule>
                  <Paragraphe>Nature du changement à déclarer</Paragraphe>
                </Cellule>
                <Cellule>
                  <Paragraphe>Formulaire à utiliser</Paragraphe>
                </Cellule>
              </Rangée>
        </Tableau>
    </SousChapitre>
    Je cherche à afficher tout DANS L'ORDRE. Or je n'y arrive pas.
    Voici mon Code XSL pour afficher cela :
    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
     
    <xsl:for-each select="Texte">
    		<h3>Titre du Chapitre: <xsl:value-of select="Chapitre/Titre/Paragraphe"/></h3>
    		<xsl:for-each select="Chapitre/SousChapitre">		
    			<dd>
    				<i><h4>Sous-chapitre Titre : <xsl:value-of select="Titre/Paragraphe"/></h4></i>
    				<dd>
    					<xsl:for-each select="Paragraphe">
    						<xsl:if test="contains(., ':')">
    							<xsl:value-of select="." /><br></br>
    							<xsl:if test="../Liste">
    								<xsl:for-each select="../Liste/Item">
    									<dd><ul><li><xsl:value-of select="Paragraphe" /></li><br></br></ul></dd>
    								</xsl:for-each>
    							</xsl:if>
    						</xsl:if>
    						<xsl:if test="not(contains(., ':'))">
    							<xsl:value-of select="." /><br></br>
    						</xsl:if>
    					</xsl:for-each>
    				</dd>
    			</dd>
    		</xsl:for-each>
    </xsl:for-each>
    Merci de votre aide.

  2. #2
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    Ce n'est pas du tout clair ce que vous souhaitez arriver exactement... mais je devine. La structure semble suggérer que quand le texte de l'élément Paragraphe contient un deux-points (à la fin, ce qui n'est pas renforcé et qu'il devrait renforcer plus rigidement), l'élément qui le suit (following-sibling) devrait contenir les informations écrites dedans les déscendants qui sont nommés Paragraphe, eux aussi. Si un élément Paragraphe ne contient pas de deux-points à la fin, on sort son contenu simplement....

    Si le fil conducteur de raisonnement c'est ça, on peut faire comme ceci.
    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
        <xsl:for-each select="Chapitre/SousChapitre">		
            <dd>
                <i><h4>Sous-chapitre Titre : <xsl:value-of select="Titre/Paragraphe"/></h4></i>
                <dd>
                    <xsl:for-each select="Paragraphe">
                        <xsl:if test="contains(., ':')">
                            <xsl:value-of select="." /><br></br>
                            <xsl:for-each select="following-sibling::*[1]//Paragraphe">
                                <dd><ul><li><xsl:value-of select="." /></li><br></br></ul></dd>
                            </xsl:for-each>
                        </xsl:if>
                        <xsl:if test="not(contains(., ':'))">
                            <xsl:value-of select="." /><br></br>
                        </xsl:if>
                    </xsl:for-each>
                </dd>
            </dd>
        </xsl:for-each>
    Je ne prends aucune considération sur la pertinence des <dd>, <ul>, <li> que leur séquence d'apparence je trouve généralement un peu bizarre à vrai dire... mais là je passe.

  3. #3
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 552
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 552
    Points : 21 608
    Points
    21 608
    Par défaut
    Je dirais plutôt qu'apparemment : tout ce qui n'est pas un Paragraphe devrait être placé avec le Paragraphe qui le précède. En l'occurrence List ou Tableau.
    Dans ce cas-là, c'est évidemment n'importe quoi de se baser sur la présence ou non de :
    Il faut regarder si on est suivi ou non de quelque chose qui n'est pas un Paragraphe.

    Et c'est là qu'est le problème pour afficher les choses "dans l'ordre" : notre ami ne connaissait sans doute pas following-sibling et ne réalisait sans doute pas le besoin de ne prendre que le premier avec [1], et donc en cherchant la List ou le Tableau associé à un paragraphe, il les affichait toutes et tous.

    Mais bon, tout ça est à confirmer bien sûr. Au final on nous a pas dit à quoi doit ressembler le résultat. Et c'est mal.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. Réponses: 0
    Dernier message: 12/09/2012, 17h57
  2. Réponses: 6
    Dernier message: 22/02/2008, 18h22
  3. Réponses: 4
    Dernier message: 09/05/2007, 23h39
  4. Afficher une liste sous forme de tableau [SWING]
    Par Sylver--- dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 04/03/2007, 15h17

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