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 :

[XPATH] Formatter un mixed content dans un exp XPATH


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut [XPATH] Formatter un mixed content dans un exp XPATH
    Bonjour,


    Voila j'ai quelque petite intérogations sur un type mixed content:

    mon xml:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <Essai xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xd="http://schemas.microsoft.com/office/infopath/2003">
    <Muster id="3">
    <Mus><N Des="Nomdre d'action">1234</N> actions à CHF <B Des="au pix de (l'unité)">1200.25</B> pour <T Des="Nom, prénom de la personne">Coita, Thierry</T></Mus>
    <Text>^ action a CHF ^ pour ^</Text>
    </Muster>
    </Essai>
    Donc si je fais un value-of de Mus j'obtiens:
    1234 actions à CHF 1200.25 pour Coita, Thierry
    Est possible de faire une expression qui me permettra pour un élément du type B ou N de mettre un ' pour que sa donne a l'affichage 1'234? Pareil pour l'élément D (une date) 11.12.2005 a la place de 2005-12-11?

    J'ai 4 possibilités: B, D, T, N qui peuve être dans n'importe quelle ordre et même plusieurs fois dans différente phrase!

    Es-ce que c'est possible de faire un traitement ou il ne vaux mieux pas y penser et essayé de trouvé autre chose?

    Merci pour vos suggestions

    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

  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

  3. #3
    Membre expérimenté
    Avatar de virgul
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    1 625
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2004
    Messages : 1 625
    Points : 1 666
    Points
    1 666
    Par défaut
    Ok merci Erwy! Nickel les liens!

    En faite c'est très simple!!!

    voici mon 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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    	<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
    	<xsl:variable name="apos">'</xsl:variable>
    	<xsl:template match="B">
    		<!-- Traitement de B nombre décimal qui peut être entier-->
    		<B>
    			<xsl:attribute name="Des"><xsl:value-of select="@Des"/></xsl:attribute>
    			<xsl:choose>
    				<xsl:when test="contains(node(), '.')">
    					<xsl:value-of select="translate(format-number(., '###,###.##'), ',', $apos)"/>
    				</xsl:when>
    				<xsl:otherwise>
    					<xsl:number value="node()" grouping-separator="'" format="1" grouping-size="3"/>.-- </xsl:otherwise>
    			</xsl:choose>
    		</B>
    	</xsl:template>
    	<xsl:template match="N">
    		<!-- Traitement de N nombre entier-->
    		<N>
    			<xsl:attribute name="Des"><xsl:value-of select="@Des"/></xsl:attribute>
    			<xsl:number value="node()" grouping-separator="'" format="1" grouping-size="3"/></N>
    	</xsl:template>
    	<xsl:template match="D">
    		<!-- Traitement de D  date pour passer de yyyy-MM-dd a dd.MM.yyyy-->
    		<D>
    			<xsl:attribute name="Des"><xsl:value-of select="@Des"/></xsl:attribute>
    			<xsl:value-of select="concat(substring(node(), 9, 2), '.', substring(node(), 6, 2), '.', substring(node(),1,4))"/></D>
    	</xsl:template>
    	<xsl:template match="*">
    		<xsl:copy>
    			<xsl:apply-templates select="*|@*|text()"/>
    		</xsl:copy>
    	</xsl:template>
    	<xsl:template match="@*">
    		<xsl:attribute name="{name()}"><xsl:value-of select="."/></xsl:attribute>
    	</xsl:template>
    </xsl:stylesheet>
    ++

    Thierry
    "Life is short don't forget to inhale"
    Mais: "Mieux vaux arriver en retard dans ce monde... qu'en avance à l'autre."

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

Discussions similaires

  1. [XPATH] génération d'un xpath pour faire des recherches dans un xml
    Par Spaceman Spiff dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 11/06/2007, 18h18
  2. [XPath] détection url et email dans un noeud
    Par robert_trudel dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 09/02/2007, 03h27
  3. [XPath] Probleme dans une requete XPath
    Par kalmless21 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 03/07/2006, 22h22
  4. [JDOM] java.lang.NoClassDefFoundError: org/jdom/Content dans une application web
    Par oughlad dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 30/05/2006, 18h06
  5. [XPath] Récupérer l'ID max dans un fichier XML
    Par Phach dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 28/07/2005, 13h57

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