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 :

Filtre XSLT OpenOffice


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2013
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2013
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Filtre XSLT OpenOffice
    Bonjour à tous,

    Je tente de développer un filtre en XSLT pour pouvoir exporter des données contenues dans une feuille tableur OpenOffice.

    Filtre :

    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    <xsl:template match="/">
    	<data><!--Process all tables -->
    		<xsl:apply-templates select="//table:table"/>
    	</data>
    </xsl:template>
     
    <xsl:template match="table:table">
    	<xsl:for-each select="table:table-row">
    		<xsl:if test="position()&gt;1">
    			<xsl:element name="value">
    				<xsl:for-each select="table:table-cell">
    					<xsl:choose>
    						<xsl:when test="position()=1">
    							<xsl:attribute name="year">
    								<xsl:value-of select="text:p"/>
    							</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="position()=2">
    							<xsl:attribute name="month">
    								<xsl:value-of select="text:p"/>
    							</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="position()=3">
    							<xsl:attribute name="day">
    								<xsl:value-of select="text:p"/>
    							</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="position()=4">
    							<xsl:attribute name="week_day">
    								<xsl:value-of select="text:p"/>
    							</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="position()=5">
    							<xsl:attribute name="hour">
    								<xsl:value-of select="text:p"/>
    							</xsl:attribute>
    						</xsl:when>
    						<xsl:when test="position()=6">
    							<xsl:value-of select="text:p"/>
    						</xsl:when>
    					</xsl:choose>
    				</xsl:for-each>
    			</xsl:element>
    		</xsl:if>
    	</xsl:for-each>
    </xsl:template>
    Concrètement, je possède un élément par ligne, dans lequel je stocke sa valeur et auquel j'assigne 5 attributs.
    Jusque là le filtre semblait être efficace mais j'ai rencontré des problèmes lorsque des cellules d'une même ligne ont des contenus identiques.

    Par exemple si toutes les cellules de la ligne 2 contiennent "0", mon filtre n'attribut une valeur qu'à un seul élément (en l’occurrence "year"). Ensuite, il passe à la ligne suivante. Je n'arrive pas à comprendre ce qui m'échappe.

    Et ce que quelqu'un a une idée de(s) l'erreur(s) que j'ai pu commettre? C'est la première fois que j'écris quelque chose en XSL donc il y a très certainement plusieurs failles dans l'organisation de mon code! Je vous remercie par avance!

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par Gio_to Voir le message
    Et ce que quelqu'un a une idée de(s) l'erreur(s) que j'ai pu commettre?
    Probablement aucune, c'est sans doute OpenOffice qui représente ce cas d'une manière différente que le cas général.

    Il faut regarder le code XML, pas le code XSLT.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre émérite Avatar de tsuji
    Inscrit en
    Octobre 2011
    Messages
    1 558
    Détails du profil
    Informations forums :
    Inscription : Octobre 2011
    Messages : 1 558
    Points : 2 736
    Points
    2 736
    Par défaut
    J'ai regardé l'issue de la sortie des tableaux aux xml plats (fods) et abhorre la choix à mon sens très malheurse d'utiliser les notions d'attribut table:number-rows-repeated et table:number-columns-repeated pour faire un peu d'économie de la taille du document xml sortant.

    Pour proprement filtrer les fods, il vous faut écrire des récursions, une pour rows et une autre pour colonnes. Mais, ce n'est pas si évident pour quelqu'un débuter sur ce sujet, hélas ! Essayez d'abord de vous en renseigner les façons de faire de template nommé et de récursion.

Discussions similaires

  1. [OpenOffice][Tableur] package de filtre XSLT (.jar)
    Par valauga dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 24/08/2012, 10h46
  2. [XSLT][OpenOffice] Problème filtre d'export XML
    Par Maximil ian dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 04/06/2011, 20h10
  3. [OpenOffice][Tableur] [Filtre XSLT] répétition de cellules vides
    Par Lady dans le forum OpenOffice & LibreOffice
    Réponses: 0
    Dernier message: 02/03/2009, 10h40
  4. [XSLT] Réalisation d'un filtre
    Par enael dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/05/2007, 15h22
  5. [XSLT] XML vers un nouveau XML (filtre)
    Par abertaud dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 04/05/2007, 14h32

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