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 :

Extraire la valeur d'un élément XML vers un document FO [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 25
    Points
    25
    Par défaut Extraire la valeur d'un élément XML vers un document FO
    Bonjour,

    Je bute sur quelque chose de visiblement très simple mais j'ai beau regarder encore et encore, je ne comprends pas pourquoi cela ne fonctionne pas: copier un seul élément d'un document xml vers un autre. Il s'agit de copier uniquement la valeur de l'élément <title>.

    XML source:

    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
     
    <TEI xmlns="http://www.tei-c.org/ns/1.0">
       <teiHeader>
          <fileDesc>
             <titleStmt>
                <title>Titre</title>
                <author>Auteur</author>
             </titleStmt>
             <publicationStmt>
                <publisher>Editeur</publisher>
                <address>Adresse</address>
                <date>Année</date>
             </publicationStmt>
          </fileDesc>
       </teiHeader>
    </tei>
    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
     
    <?xml version="1.0" encoding="ISO-8859-1" ?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
        <xsl:output method="xml" version="1.0" encoding="ISO-8859-1" indent="yes"/>
     
        <xsl:template match="/">
            <fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
                <fo:layout-master-set>
                    <!-- Modèle première page -->
                    <fo:simple-page-master master-name="page-initiale" page-width="21cm"
                        page-height="29,7cm">
                        <fo:region-body margin="3cm" region-name="body"/>
                        <fo:region-after extent="2cm" region-name="first-page-footer"/>
                    </fo:simple-page-master>
     
                    <!-- Modèle pages standard -->
                    <fo:simple-page-master master-name="pages-standard">
                        <fo:region-body margin-top="3cm"/>
                    </fo:simple-page-master>
     
                    <!-- Modèle séquence de pages -->
                    <fo:page-sequence-master master-name="corps-IR">
                        <fo:single-page-master-reference master-reference="page-initiale"/>
                        <fo:repeatable-page-master-reference master-reference="pages-standard"/>
                    </fo:page-sequence-master>
                </fo:layout-master-set>
     
                <fo:page-sequence master-reference="page-initiale">
                    <fo:flow flow-name="xsl-region-body">
                        <fo:block space-before="12pt" space-after="6pt">
                            <xsl:value-of select="tei/teiheader/filedesc/titlestmt/title"/>
                        </fo:block>
                    </fo:flow>
                </fo:page-sequence>
            </fo:root>
        </xsl:template>
    A la sortie, l'élément <fo:block> est vide au lieu de contenir "Titre".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <fo:flow flow-name="xsl-region-body">
             <fo:block space-before="12pt" space-after="6pt"/>
          </fo:flow>
    Je pense que je commets une erreur de débutant, quelqu'un peut-il me remettre sur les rails?

    Par avance merci,

    J.

  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
    Hello,

    Je vois deux erreurs :

    - Tu as ignoré la sensibilité à la casse.
    L'élément racine n'est pas tei mais TEI. Ensuite c'est pas teiheader mais teiHeader. Et ainsi de suite.

    - Tu as ignoré le namespace source. Ce n'est pas TEI mais "TEI dans le namespace http://www.tei-c.org/ns/1.0". Il faut préciser le namespace des éléments qu'on sélectionne.
    En XSLT 1.0, la seule manière de faire ça est de déclarer un préfixe pour le namespace en question, et utiliser ce préfixe dans la sélection.
    Bref ça donne ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="//tns:title" xmlns:tns="http://www.tei-c.org/ns/1.0" />
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Responsable d'un système d'information métier
    Inscrit en
    Septembre 2014
    Messages
    26
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Responsable d'un système d'information métier
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Septembre 2014
    Messages : 26
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup!

    Je découvre du coup ce qu'est le namespace.

    J.

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

Discussions similaires

  1. [JDOM] Récupérer valeur d'un élément XML avec JDOM
    Par HackerNet dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 22/06/2013, 03h35
  2. [Débutant] Extraire une valeur d'un fichier XML
    Par Invité dans le forum VB.NET
    Réponses: 2
    Dernier message: 05/08/2011, 21h00
  3. extraire données fichiers xml vers excel
    Par newcodeur dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 02/06/2008, 10h17
  4. Réponses: 4
    Dernier message: 17/01/2007, 09h09
  5. [XML] extraire la valeur de "encoding"
    Par Grand sorcier dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 13/07/2006, 18h01

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