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]Contenu mixte et apply-template


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 [XSLT]Contenu mixte et apply-template
    Bonjour,

    Voila je doit dans une balise à contenu mixte chercher les différentes balises b avec l'attribut id="I" pour le rebaliser mais tout les autre id doivent se recopier sans la balise.

    Problème je dois vérifier que le dernier caractère ne soit pas un . ou ; si tel est le cas je dois l'effacer comment faire?

    Ce que j'ai fais:
    xslt:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    <xsl:template match="Texte/Text">
    <xsl:variable name="EndText"><xsl:value-of select="string-length(.)"/></xsl:variable>
    <w:t xml:space="preserve"><xsl:choose>
    <xsl:when test="substring(., $EndText, 1) = '.' or substring(., $EndText, 1) =';'"><xsl:value-of select="substring(., 1,number($EndText)-1)"/></xsl:when>
    <xsl:otherwise><xsl:apply-templates select="node()"/></xsl:otherwise>
    </xsl:choose></w:t>
    </xsl:template>
    <xsl:template match="b[@id='I']">
    <ID13>
    	<xsl:value-of select="."/>
    </ID13>
    </xsl:template>
    Que puis-je bien mettre dans le xsl:when pour qu'il me renvoit la balise ID13? et pas seulement son contenu comme dans le xslt au-dessus.

    un xml d'exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <Texte>
    <Text>dkjfkjdskflj <b id="I">CH-214.0.325.325-1</b> shfdl kfjds dfhksdklf hsdkljfjs <b id="T">youpi</b> fdhshfsdfs.</Text>
    </Texte>
    Merci

    Thierry

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    j'ai pas bien compris

    tu peux expliquer un peu plus?

  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
    Le but enlever le point de la fin si il y en a un.

    le second but enlever toutes les balise b qui n'ont pas id="I" et pour ce dernier (<b id="I"/>) mettre la balise ID13 a la place et son contenu a l'intérieur de cette dernière.

    C'est clair?

    Merci

    Thierry

  4. #4
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    un peu plus clair .
    as tu enlevé ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:template select="Texte/Text">
    select ->match

    tu peux me dire aussi si le point c'est ok ou non?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    son contenu a l'intérieur de cette dernière.
    tu veux dire avoir ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ID13>CH-214.0.325.325-1</ID13>

  5. #5
    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
    Citation Envoyé par valal
    select ->match
    Effectivement faute de frappe

    Citation Envoyé par valal
    tu peux me dire aussi si le point c'est ok ou non?


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    son contenu a l'intérieur de cette dernière.
    tu veux dire avoir ça?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <ID13>CH-214.0.325.325-1</ID13>
    Exactement mais avec le texte aussi et les autre balise b avec le texte seulement (orange)

    xml d'entré (va tout a droite pour voir tous le xml):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <Texte>
    <Text>Votre ID est <b id="I">CH-214.0.325.325-1</b>  et votre mot de passe est <b id="T">youpi</b> bienvenue sur toto.com.</Text>
    </Texte>
    sortie:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <w:t>Votre ID est <ID13>CH-214.0.325.325-1</ID13> et votre mot de passe est youpi bienvenue sur toto.com</w:t>

  6. #6
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    je ne sais pas si c'est ça

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="b">
    <xsl:choose>
    	<xsl:when test="@id='I'">
    		<ID13>
    		<xsl:value-of select="."/>
    		</ID13>
    	</xsl:when>
    	<xsl:otherwise>
    		<xsl:value-of select="."/>
    	</xsl:otherwise>
    </xsl:choose>
    </xsl:template>
    tu peux me dire ce que tu as comme sortie avec l'xsl actuel?

  7. #7
    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
    Mon problème c'est pas le ID13 c'est de pouvoir renvoyer sans le point.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <xsl:template match="Texte/Text">
    <xsl:variable name="EndText"><xsl:value-of select="string-length(.)"/></xsl:variable>
    <w:t xml:space="preserve"><xsl:choose>
    <xsl:when test="substring(., $EndText, 1) = '.' or substring(., $EndText, 1) =';'"><xsl:value-of select="substring(., 1,number($EndText)-1)"/></xsl:when>
    <xsl:otherwise><xsl:apply-templates select="node()"/></xsl:otherwise>
    </xsl:choose></w:t>
    </xsl:template>
    <xsl:template match="b[@id='I']">
    <ID13>
    	<xsl:value-of select="."/>
    </ID13>
    </xsl:template>
    Comment je peux appeler mon apply-template pour que le point n'y soit pas quand j'en aie un a la fin?

    Car si tu regarde dans le xsl:when il fait un substring pour ne pas avoir le point et le problème est que le template match="b[@id='I']" ne va pas être appeler si je procède ainsi.

    Donc en résumé mon problème c'est de pouvoir entré dans le template match="b[@id='I']" et si il y a un point a la fin de l'élément Texte/text, il ne faut pas qu'il me le renvoye.

    Regarde bien mon xml d'entré et de sortie dans mon post précédent le ch-... et copié avec la balise ID13 et youpi pas vu que son ID!='I'. Le point a la fin de la phrase est supprimé.

    Merci

Discussions similaires

  1. Réponses: 1
    Dernier message: 15/05/2007, 11h19
  2. [XSLT] problème avec apply-templates
    Par ploxien dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 01/11/2006, 12h20
  3. [XSLT]utilisation de l'apply template
    Par koudjo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/07/2006, 14h14
  4. [XSLT] Problème avec apply-templates
    Par NeoMan dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 29/12/2005, 15h45
  5. [XSLT] Différence entre apply-templates et call-template
    Par Cpt.FLAM dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/04/2005, 19h47

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