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 :

Pourquoi <xsl:template match="(c1250|c1250-autres)[1]" > est-il non valide?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2006
    Messages : 3
    Points : 2
    Points
    2
    Par défaut Pourquoi <xsl:template match="(c1250|c1250-autres)[1]" > est-il non valide?
    J'ai un xml tel que celui-ci:
    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
    <main>
      <partie1>
        <c1001>checked</c1001>
        <c1005>12</c1005>
        <c1100>45678.84</c1100>
        ....
        <c1250>
           <valeur>45678.19</valeur>
           <valeur>1235.74</valeur>
        </c1250>
        <c1250-autres>12457.74</c1250-autres>
        <c1250-avantages>1247.73</c1250-avantages>
        <c1280>417.91</c1280>
        ...
     </partie1>
     <partie2>
        ...
     </partie2>
    </main>
    et le but est d'afficher le contenu sous la forme de tableau à 2 colonnes : code et valeur. Là ou ça se complique, c'est que les codes c1250, c1250-autres, et c1250-avantages (s'ils existent) doivent être additionnés et affichés qu'une seule fois.
    Par conséquent, j'avais pensé utiliser un template:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="(c1250|c1250-autres|c1250-avantages)[1]">
    <!-- Faire la somme et l'afficher -->
    <xsl:value-of select="sum(valeur|parent::part1/c1250-pecule|parent::part1/c1250-avantages|parent::part1/c1250-autres|parent::part1/c1250-reprise)" />
     
    </xsl:template>
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="c1250|c1250-autres|c1250-avantages">
    <!-- ne rien faire -->
    </xsl:template>
    De sorte que dès qu'un des éléments c1250, c1250-autres, ou c1250-avantages est trouvé, le premier template est utilisé et par contre, les occurences suivantes sont gérées par le 2ème template qui dès lors ignore les éléments.

    Lorsque je le teste dans XMLSpy, ça fonctionne. Par contre, en Visual Studio, j'ai l'erreur "Unexpected token '(' in the expression".

    Quelqu'un pourrait-il me dire ce qui ne va pas et/ou comment résoudre mon problème?
    Merci

  2. #2
    Membre actif
    Profil pro
    Inscrit en
    Février 2009
    Messages
    155
    Détails du profil
    Informations personnelles :
    Localisation : France, Indre et Loire (Centre)

    Informations forums :
    Inscription : Février 2009
    Messages : 155
    Points : 231
    Points
    231
    Par défaut
    Bonjour,

    écris plutôt le premier match ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template match="c1250[1]|c1250-autres[1]|c1250-avantages[1]">

Discussions similaires

  1. Ordre des <xsl:template match="..">
    Par camboui dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 16/12/2008, 11h57
  2. [XSL]<xsl:template match> path
    Par *alexandre* dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 19/07/2007, 13h24
  3. xsl:Template sur un élément sans namespace
    Par dust45 dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/10/2005, 16h52
  4. [xsl]simuler le mecanisme OO de "liaison dynamique"
    Par philemon_siclone dans le forum XSL/XSLT/XPATH
    Réponses: 10
    Dernier message: 19/12/2003, 11h34
  5. template match="node() mais pas text()"
    Par Manu_Just dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 26/03/2003, 10h52

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