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 :

[XSL] Transformation de document xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut [XSL] Transformation de document xml
    salut à tous, j'espère que quelcun ppourra m'aider a resoudre le problème suivant:

    je dispose d'un document XML que je veux transformer pour le rondre conforme à ma propre DTD et j'ai un problème pour recuperer des sous chaine. Le document XML en question est de cette forme:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <lmd>
      <info id="news.masterinfo" type="news" name="new">Résultats des admissions 2004/2005.</info>
      <info id="news.masterinfo" type="news" name="new">Les habilitations sont arrivées.</info>
    .
    .
    .
    la partie qui m'interesse est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
      <info id="lic-bim.S1" type="semestre" name="reference-ue">L-I1</info>
      <info id="lic-bim.S1" type="semestre" name="reference-ue">L-I2</info>
      <info id="lic-bim.S1" type="semestre" name="reference-ue">L-B1</info>
      <info id="lic-bim.S2" type="semestre" name="reference-ue">L-I3</info>
      <info id="lic-bim.S2" type="semestre" name="reference-ue">L-M3</info>
    <info id="mi.aro.S1" type="semestre" name="reference-ue">M08</info>
      <info id="mi.aro.S2" type="semestre" name="reference-ue">M04</info>
      <info id="mi.aro.S2" type="semestre" name="reference-ue">M47</info>
      <info id="mi.aro.S2" type="semestre" name="reference-ue">M05</info>
      <info id="mi.aro.S3" type="semestre" name="reference-ue">M09</info>
    .
    .
    .
    ce qui m'interesse c'est de recuperer S? le problème c'est que la frme de l'expression id n'est pas toujours la mêm, j'ai essayé avec substring-after mais des fois je recupère s1 par exemple et des fois
    info.S3.
    si vous avez une idée je vous remercie d'avance de la poster.



    [Ajout des balises CODE par GrandFather - merci d'y penser la prochaine fois]

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    en fait, la règle à suivre est : "prendre la sous-chaîne qui suit le dernier point dans la chaîne"

    Il suffit d'une petite fonction récursive pour traiter ce problème :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template name="extraction-S">
    	<xsl:param name="chaine"/>
    	<xsl:variable name="apres-point" select="substring-after($chaine, '.')"/>
    	<xsl:choose>
    		<xsl:when test="substring-after($apres-point, '.') = ''">
    			<xsl:value-of select="$apres-point"/>
    		</xsl:when>
    		<xsl:otherwise>
    			<xsl:call-template name="extraction-S">
    				<xsl:with-param name="chaine" select="$apres-point"/>
    			</xsl:call-template>
    		</xsl:otherwise>
    	</xsl:choose>	
    </xsl:template>

  3. #3
    Membre à l'essai
    Inscrit en
    Septembre 2004
    Messages
    31
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 31
    Points : 24
    Points
    24
    Par défaut thanks
    je te remercie pour ta repense, je viens de trouver une manière simple de regler ce problème, en effet je fait :

    concat('S',substring-after(current()/@id,'S')), dans mon cas ça marche trés bien mais ta methode reste plus interessante alors si tu peux me doner plus de detailles : je te remercie d'avance

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

Discussions similaires

  1. [XSLT] Transformer un Document XML
    Par merlinerick dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/05/2009, 17h16
  2. [XSLT] Tutoriel sablotron pour transformer un document XML
    Par fido1 dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 12/12/2008, 17h04
  3. [XSLT] Transformation de document .XML ou .TXT en Java
    Par ham83dje dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 30/05/2008, 12h16
  4. [XSL] transformer un document xml dans le format pdf
    Par soumou dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 17/11/2006, 19h39
  5. [XML/XSL] Transformation Excel
    Par Tyler Durden dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 27/11/2003, 21h00

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