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 :

Un autre soucis mais de prix cette fois


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 4
    Points
    4
    Par défaut Un autre soucis mais de prix cette fois
    Re bonjour,

    j'ai un autre soucis d'affiche mais cette fois pour afficher un prix.
    Donc dans mon fichier XML j'ai une balise <price> et j'aimerais afficher les prix égale ou supérieur à 200 000 euros, tout en prenant en compte l'espace qu'il y a dans le chiffre.
    Comme tout à l'heure.

    Mon code XSL :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    <?xml version="1.0" encoding="ISO-8859-1"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="html" encoding="ISO-8859-15"/>
     
    	<xsl:template match="/module/content/rss/channel">
    	  <xsl:apply-templates select="item"/>
    	</xsl:template>
     
    	<xsl:template match="item">
    	    <xsl:variable name="lien">
    	      <xsl:text>http://logp.xiti.com/go.ad?xts=</xsl:text>
    	      <xsl:text>##f##</xsl:text>
    	      <!-- xitisiteid -->
    	      <xsl:text>&atc=PUB-[D_</xsl:text>
    	      <xsl:text>##a##</xsl:text>
    	      <!-- campagneid -->
    	      <xsl:text>]-[</xsl:text>
    	      <xsl:text>##d##</xsl:text>
    	      <!-- templateid -->
    	      <xsl:text>]-[</xsl:text>
    	      <xsl:text>##b##</xsl:text>
    	      <!-- variantid -->
    	      <xsl:text>]-[</xsl:text>
    	      <xsl:text>##e##</xsl:text>
    	      <!-- encartid -->
    	      <xsl:text>]---[D_</xsl:text>
    	      <xsl:text>##c##</xsl:text>
    	      <!-- partenaireid -->
    	      <xsl:text>]-&type=AT&url=</xsl:text>
    	      <xsl:value-of select="link"/>
    	    </xsl:variable>
     
    		<xsl:if test="position() &lt; 2">
    		    <div class="bloc_content">
    				<div class="bloc_partenaire_1img">
    		          <p>
    		            <a target="_blank">
    		              <xsl:attribute name="href"><xsl:value-of select="$lien"/></xsl:attribute>
    		                  <img width="300" height="225">
    		                    <xsl:attribute name="src"><xsl:value-of select="image1/src" /></xsl:attribute>
    		                  </img>
    		              </a>
    		          </p>
    		          <p class="button button_dark">
    		            <a class="simple_arrow action_arrow" target="_blank">
    		              <xsl:attribute name="href"><xsl:value-of select="$lien"/></xsl:attribute>
    		              <xsl:text>Voir l'annonce</xsl:text>
    		            </a>
    		          </p>
    		        </div>
    			      <h2 class="item_title">
    			        <a target="_blank">
    			          <xsl:attribute name="href"><xsl:value-of select="$lien"/></xsl:attribute>
    			          <xsl:value-of select="title"/><br/>
    			          <xsl:value-of select="price"/><xsl:text> euros</xsl:text>
    			        </a>
    			      </h2>
    			    </div>
    		</xsl:if>
    	</xsl:template>
     
    </xsl:stylesheet>
    Et mon code XSL :

    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
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    <?xml version="1.0" encoding="ISO-8859-15"?>
    <module id="659">
    	<content appearance="" appearance_slug="">
    		<rss version="2.0">
    			<channel>
    				<item>
    					<title>Appartement 5 pièces - Suresnes</title>
    					<price>110 000</price>
    					<description>Appartement familial de 114 m² baigné de verdure ouvrant sur un jardin de 54 m² et sur une terrasse de 32 m². Comprenant un...</description>
    					<image1>
    						<src>http://4.visuels.poliris.com/2d/4/5/8/6/45864d54-4ef1.jpg</src>
    						<width>400</width>
    						<height>300</height>
    					</image1>
    					<image2>
    						<src>http://2.visuels.poliris.com/thumbnails/2/4/1/8/24183623-5d51.jpg</src>
    						<width>100</width>
    						<height>75</height>
    					</image2>
    					<image3>
    						<src>http://3.visuels.poliris.com/thumbnails/3/9/2/5/39255bb7-6ed1.jpg</src>
    						<width>100</width>
    						<height>66</height>
    					</image3>
    					<image4>
    						<src>http://3.visuels.poliris.com/thumbnails/3/8/0/3/3803c3ea-5ef0.jpg</src>
    						<width>100</width>
    						<height>76</height>
    					</image4>
    				</item>
    				<item>
    					<title>Appartement 4 pièces</title>
    					<price>220 000</price>
    					<description>SPACIEUX ET DANS UN CADRE AGRÉABLE !! **
    Bel appartement par ses volumes et son environnement. En effet, rare sont les appartements T4 de 83 m² !!...</description>
    					<image1>
    						<src>http://6.visuels.poliris.com/2d/6/5/e/6/65e6416a-62c8.jpg</src>
    						<width>400</width>
    						<height>266</height>
    					</image1>
    					<image2>
    						<src>http://d.visuels.poliris.com/thumbnails/d/3/1/e/d31e30d7-439f.jpg</src>
    						<width>100</width>
    						<height>66</height>
    					</image2>
    					<image3>
    						<src>http://e.visuels.poliris.com/thumbnails/e/c/b/9/ecb91eff-4c2d.jpg</src>
    						<width>100</width>
    						<height>65</height>
    					</image3>
    					<image4>
    						<src>http://3.visuels.poliris.com/thumbnails/3/7/c/b/37cbd097-3267.jpg</src>
    						<width>100</width>
    						<height>65</height>
    					</image4>
    				</item>
    				<item>
    					<title>Neuilly plaisance</title>
    					<price>248 000</price>
    					<description>Bords de Marne, beau 2 pièces avec 2 balcons, pleine vue Marne, séjour de 20m², chambre avec placards, cuisine équipée-aménagée, salle de bains, WC...</description>
    					<image1>
    						<src>http://0.visuels.poliris.com/2d/0/d/f/5/0df51d22-48c4.jpg</src>
    						<width>400</width>
    						<height>300</height>
    					</image1>
    					<image2>
    						<src>http://a.visuels.poliris.com/thumbnails/a/1/c/4/a1c45073-3fca.jpg</src>
    						<width>100</width>
    						<height>75</height>
    					</image2>
    					<image3>
    						<src>http://c.visuels.poliris.com/thumbnails/c/7/c/1/c7c122b3-2a27.jpg</src>
    						<width>100</width>
    						<height>75</height>
    					</image3>
    					<image4>
    						<src>http://2.visuels.poliris.com/thumbnails/2/5/3/7/25373903-3642.jpg</src>
    						<width>100</width>
    						<height>75</height>
    					</image4>
    				</item>
    				<item>
    					<title>Appartement 2 pièces</title>
    					<price>198 000</price>
    					<description>charles de gaulle a 10mn de la gare dans un bel immeuble 1930- appartement deux pièces en bon état - séjour avec cuisine US - grande...</description>
    					<image1>
    						<src>http://6.visuels.poliris.com/2d/6/4/f/1/64f1846b-42ea.jpg</src>
    						<width>400</width>
    						<height>268</height>
    					</image1>
    					<image2>
    						<src>http://e.visuels.poliris.com/thumbnails/e/c/5/6/ec565479-3777.jpg</src>
    						<width>100</width>
    						<height>67</height>
    					</image2>
    					<image3>
    						<src>http://8.visuels.poliris.com/thumbnails/8/2/4/8/8248888e-3203.jpg</src>
    						<width>67</width>
    						<height>100</height>
    					</image3>
    					<image4>
    						<src>http://9.visuels.poliris.com/thumbnails/9/0/1/5/901510d3-362f.jpg</src>
    						<width>100</width>
    						<height>67</height>
    					</image4>
    				</item>
    				<item>
    					<title>Appartement 3 pièces</title>
    					<price>240 000</price>
    					<description>A deux pas de toutes les commodités, venez poser vos valises dans ce F3 plein de charme, calme et lumineux. Il comprend: Entrée, cuisine...</description>
    					<image1>
    						<src>http://4.visuels.poliris.com/2d/4/7/9/d/479d12e6-3fb3.jpg</src>
    						<width>267</width>
    						<height>400</height>
    					</image1>
    					<image2>
    						<src>http://f.visuels.poliris.com/thumbnails/f/0/8/e/f08eaa85-4528.jpg</src>
    						<width>100</width>
    						<height>66</height>
    					</image2>
    					<image3>
    						<src>http://e.visuels.poliris.com/thumbnails/e/2/8/d/e28df73d-3569.jpg</src>
    						<width>100</width>
    						<height>66</height>
    					</image3>
    					<image4>
    						<src>http://f.visuels.poliris.com/thumbnails/f/8/c/e/f8ce8873-6c67.jpg</src>
    						<width>67</width>
    						<height>100</height>
    					</image4>
    				</item>
    			</channel>
    		</rss>
    	</content>
    </module>

    Je vous remercie par avance.

  2. #2
    Modérateur

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

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 566
    Points : 21 635
    Points
    21 635
    Par défaut
    En XSLT 1.0 c'est très chiant.

    Tu as besoin de d'abord mettre le prix sous forme numérique dans une variable, et ensuite seulement de vérifier si ce prix est sous les 200000.

    Voici comment faire :

    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
    <!-- Template nommé récursif qui prend un texte et produit le même texte sans espace.*-->
    <xsl:template name="remove-spaces">
      <xsl:param name="text"/>
      <xsl:choose>
        <xsl:when test="contains($text, ' ')">
          <xsl:value-of select="string-before($text, ' ')"/>
          <xsl:call-template name="remove-spaces">
            <xsl:with-param name="text" select="string-after($text, ' ')" />
          </xsl:call-template>
        </xsl:when>
        <xsl:otherwise>
          <xsl:value-of select="$text"/>
        </xsl:otherwise>
      </xsl:choose>
    </xsl:template>

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <!-- Ensuite, à utiliser dans un autre template-->
    <xsl:variable name="price">
      <xsl:call-template name="remove-spaces">
        <xsl:with-param name="text" select="price"/>
      </xsl:call-template>
    </xsl:variable>
    <!-- Et utiliser la variable $price dans un prédicat. -->

Discussions similaires

  1. Réponses: 17
    Dernier message: 21/06/2012, 15h07
  2. J'aime pas la pub, mais cette fois..
    Par Sunchaser dans le forum La taverne du Club : Humour et divers
    Réponses: 19
    Dernier message: 25/04/2012, 08h34
  3. Réponses: 5
    Dernier message: 08/02/2007, 18h05
  4. Autre contexte mais tjs problème d'appel fct interne
    Par Neilos dans le forum C++Builder
    Réponses: 1
    Dernier message: 28/08/2004, 13h51
  5. ASM + DELPHI ... soucis ... mais top intéressant !
    Par - Robby - dans le forum Langage
    Réponses: 9
    Dernier message: 21/11/2003, 15h58

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