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] combiner xsl:for-each-group et tokenize() ?


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [XSLT] combiner xsl:for-each-group et tokenize() ?
    Je cherche à extraire une liste de mots (tags) uniques contenus dans des attributs sous forme de chaines séparées par des espaces.
    Le XML source contient des lignes comme ça (liste de bookmarks fournis par del.icio.us) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <posts>
    <post href="http://www.opencascade.org/" description="Open CASCADE" tag="3d geometry" >
    <post href="http://www.ugs.com/products/open/d-cubed/" description="UGS: PLM Components: D-Cubed" tag="geometry cad">
    ...

    j'aimerai obtenir la liste "3d,geometry,cad" (l'ordre n'a pas d'importance).
    comment ajouter tokenize() dans le code suivant pour diviser séparer les mots tout en éliminant les doublons ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:for-each-group select="posts/post/@tag" group-by=".">
      <xsl:value-of select="current-grouping-key()"/>
    </xsl:for-each-group>
    Merci beaucoup!

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 60
    Localisation : Suisse

    Informations forums :
    Inscription : Décembre 2006
    Messages : 3
    Points : 3
    Points
    3
    Par défaut [XSLT2] début de réponse
    Je me réponds à moi-même... Voilà où j'en suis : ça marche, mais est-ce quelqu'un voit une manière plus efficace de procéder ? Merci!

    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
    <?xml version='1.0' encoding='utf-8' ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0">
    	<xsl:output method="text"/>
    	<xsl:template match="/">
    	<xsl:variable name="tags">
    		<xsl:for-each select="posts/post">
    			<xsl:for-each select="tokenize(@tag,' ')">
    				<tag><xsl:value-of select="."/></tag>
    			</xsl:for-each>
    		</xsl:for-each>
    	</xsl:variable>
    	<xsl:for-each-group select="$tags/tag" group-by=".">
    		<xsl:value-of select="current-group()[1]"/>
    		<xsl:text>/</xsl:text>
    	</xsl:for-each-group>
    	</xsl:template>
    </xsl:stylesheet>

Discussions similaires

  1. [XSLT] Croiser plusieurs xsl:for-each avec deux documents XML
    Par strat0 dans le forum XSL/XSLT/XPATH
    Réponses: 5
    Dernier message: 21/06/2007, 16h10
  2. [XSLT][débutant] Problème xsl:value-of dans xsl:for-each
    Par Choubie dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 09/05/2007, 16h30
  3. Réponses: 5
    Dernier message: 27/03/2007, 18h39
  4. [XSLT / XPATH] for-each-group: comment ça marche?
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/11/2006, 09h40
  5. [XML][XSLT] Débutant {Probléme avec For-each-group}
    Par Silvia12 dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 29/01/2006, 21h38

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