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 :

Transformation d'un fichier XML-TEI en fichier CSV [XPATH 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Transformation d'un fichier XML-TEI en fichier CSV
    Bonjour à tous,

    Je bute actuellement sur ma feuille de style. J'aimerais récupérer un certain nombre d'informations à partir d'un fichier XML-TEI et les structurer pour donner in fine un fichier CSV. Seulement j'ai un peu de mal à construire mes expressions xPath. Pourriez-vous m'aider ?

    Voici ma feuille de style 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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    <?xml version="1.0" encoding="utf-8"?>
    <xsl:stylesheet xmlns:xsl = "http://www.w3.org/1999/XSL/Transform" xmlns:tei="http://www.tei-c.org/ns/1.0" version = "1.0">
     
       <!-- ############################## -->
       <!-- Formatage de l'arbre de sortie -->
       <!-- ############################## -->
     
    <xsl:output method="text" encoding="utf-8"/>
     
       <!-- ############################## -->
       <!--            Templates           -->
       <!-- ############################## -->
     
    <xsl:template match = "/">
    	<xsl:apply-templates select="/tei:TEI/tei:text/tei:body/tei:listBibl"></xsl:apply-templates> <!-- listBibl car il faut un noeud qui ne se répète pas comme author afin d'éviter les nombreuses occurrences -->
    </xsl:template>
     
    <xsl:template match = "tei:listBibl">
    	<xsl:text>prenom,nom,idHal,affiliation,idOrg,nomOrg,adresseOrg,PaysOrg
    </xsl:text>
    	<xsl:apply-templates select="/tei:TEI/tei:text/tei:body/tei:listBibl/tei:biblFull/tei:titleStmt/tei:author/tei:persName"/>
    </xsl:template>
     
    <xsl:template match = "tei:persName">
    	<xsl:apply-templates select="tei:forename"/> <!--prenom-->
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="tei:surname"/> <!--nom-->
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="../tei:idno[@type='halauthorid']"/>
    </xsl:template>
     
    <xsl:template match = "tei:idno[@type='halauthorid']">
    	<xsl:value-of select = "."/>
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="../tei:affiliation"/>
    </xsl:template>
     
    <xsl:template match="tei:affiliation">
    	<xsl:variable name="idOrg"> <!-- on est dans le noeud affiliation et on veut récupérer l’attribut ref en enlevant le # -->
    		<xsl:value-of select="substring-after(@ref, '#')"/>
    	</xsl:variable>
    	<xsl:message><xsl:value-of select="$idOrg"/><!--pour utiliser la variable idOrg--></xsl:message><!--pour le débug-->
    	<xsl:value-of select="$idOrg"/> <!-- pour afficher la ref affiliation sur le fichier csv -->
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="../../tei:back/tei:listOrg/tei:org[@xml:id='$idOrg']"/>
    </xsl:template>
     
    <xsl:template match="tei:org[@xml:id='$idOrg']">
    	<xsl:apply-templates select="tei:idno[@type='IdRef']"/>
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="following-sibling::tei:orgName"/>
    </xsl:template>
     
    <xsl:template match="tei:orgName">
    	<xsl:apply-templates select="tei:orgName[1]"/> <!-- libellé -->
    	<xsl:text> (</xsl:text>
    	<xsl:apply-templates select="tei:orgName[2]"/> <!-- acronyme -->
    	<xsl:text>),</xsl:text>
    	<xsl:apply-templates select="../tei:address/tei:addrLine"/>
    </xsl:template>
     
    <xsl:template match="tei:addrLine">
    	<xsl:apply-templates select="."/>
    	<xsl:text>,</xsl:text>
    	<xsl:apply-templates select="following-sibling::tei:country"/>
    </xsl:template>
     
    <xsl:template match="tei:country">
    	<xsl:apply-templates select="."/>
    	<xsl:text>
    </xsl:text>
    </xsl:template>
     
    </xsl:stylesheet>
    Le fichier XML-TEI :

    resultatAPI.xml

    Merci par avance !

  2. #2
    Membre émérite
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    octobre 2009
    Messages
    1 457
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : octobre 2009
    Messages : 1 457
    Points : 2 435
    Points
    2 435
    Par défaut Pas plus d'information ?
    Bonjour,

    ok, mais c'est pour quelle template, quel chemin que tu bloques ?
    Article : Installation de Cocoon
    Je ne réponds pas aux MP à caractère technique.

  3. #3
    Candidat au Club
    Femme Profil pro
    Étudiant
    Inscrit en
    décembre 2019
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2019
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    Citation Envoyé par polymorphisme Voir le message
    Bonjour,

    ok, mais c'est pour quelle template, quel chemin que tu bloques ?
    Bonjour,

    Merci pour votre réponse. Finalement quelqu’un d’extérieur a pu m’aider et résoudre mon pb.

    Bonne journée

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 18/12/2008, 14h38
  2. sed et awk pour transformation d'un fichier XML en CSV
    Par bstages2000 dans le forum Linux
    Réponses: 4
    Dernier message: 02/03/2008, 18h19
  3. Réponses: 7
    Dernier message: 04/06/2007, 16h51
  4. Transformation d'un fichier XML/XSL
    Par moi95 dans le forum Balisage (X)HTML et validation W3C
    Réponses: 2
    Dernier message: 05/02/2007, 16h46
  5. [Tableaux] transformation d'un fichier txt en xml
    Par edophie dans le forum Langage
    Réponses: 1
    Dernier message: 26/09/2006, 13h55

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