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 :

XML vers HTML : problème avec l'entête XML ? [débutante] [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut XML vers HTML : problème avec l'entête XML ? [débutante]
    Bonjour à tous,

    Je travaille sur Oxygen XML Editor.
    Je dois produire une transformation XML (conforme à la TEI: P5) vers HTML via XSLT.

    Je me suis penchée sur les cours que j'ai suivi en classe ainsi que sur divers posts mais sans résultat.
    Je suis toujours confrontée à deux problèmes :
    1. je ne parviens pas à récupérer les attributs de mon XML (corr resp="Wikisource") ;
    2. je ne parviens pas à bloquer une balise de mon XML (persName).

    J'ai l'impression que cela vient soit :
    - dans ma transformation XSLT de <xsl:template match="node()|@*"> ;
    - soit de l'entête de mon document XML : <?xml-model [...] schematypens="http://relaxng.org/ns/structure/1.0"?> et <?xml-model [...] chematypens="http://purl.oclc.org/dsdl/schematron"?>.

    Ai-je tord de vouloir ce résultat ? Si je transforme toutes mes balises en span et div, je ne pourrais plus différencier mes deux balises corr (je dois par la suite créer un index).

    XML :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
    	schematypens="http://purl.oclc.org/dsdl/schematron"?>
    <TEI xmlns="http://www.tei-c.org/ns/1.0">
       <teiHeader>
          <fileDesc>
             <titleStmt>
                <title>Title</title>
             </titleStmt>
             <publicationStmt>
                <p>Publication Information</p>
             </publicationStmt>
             <sourceDesc>
                <p>Information about the source</p>
             </sourceDesc>
          </fileDesc>
       </teiHeader>
       <text>
          <body>
             <p>
                Il était une fois, il y a 
                <choice> 
                   <corr resp="Wikisource">longtemps</corr>
                   <corr resp="Furne">très longtemps</corr>  
                </choice>
                un chat nommé <persName>Pouf</persName> à <geogName>Paris</geogName>. 
             </p>
          </body>
       </text>
    </TEI>
    XSLT :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xs"
        version="2.0">
     
        <xsl:template match="/">
            <html>
                <head>
                    <title>Article</title>
                    <link rel="stylesheet" type="text/css" href="Article.css"/>
                </head>
                <body>
                    <xsl:apply-templates/>
                </body>
            </html>
        </xsl:template>
     
        <xsl:template match="node()|@*">
            <xsl:copy>
                <xsl:apply-templates select="node()|@*"/>
            </xsl:copy>
        </xsl:template>
     
        <xsl:template match="choice">
            <choice>
                <xsl:apply-templates select="//corr"/>
            </choice>
        </xsl:template>
        <xsl:template match="corr[@resp='Wikisource']">
            <corr resp="Wikisource">
                <xsl:value-of select="."/>
            </corr>
        </xsl:template>
        <xsl:template match="corr[@resp='Furne']">
            <corr resp="Furne">
                <xsl:value-of select="."/>
            </corr>
        </xsl:template>
     
        <xsl:template match="persName"/>
     
    </xsl:stylesheet>
    SORTIE POUR HTML :
    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
    <html>
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Article</title>
          <link rel="stylesheet" type="text/css" href="Article.css">
       </head>
       <body><?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"><?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
    	schematypens="http://purl.oclc.org/dsdl/schematron">
          <TEI xmlns="http://www.tei-c.org/ns/1.0">
     
             <teiHeader>
     
                <fileDesc>
     
                   <titleStmt>
     
                      <title>Title</title>
     
                   </titleStmt>
     
                   <publicationStmt>
     
                      <p part="N">Publication Information</p>
     
                   </publicationStmt>
     
                   <sourceDesc default="false">
     
                      <p part="N">Information about the source</p>
     
                   </sourceDesc>
     
                </fileDesc>
     
             </teiHeader>
     
             <text>
     
                <body>
     
                   <p part="N">
                      Il était une fois, il y a 
     
                      <choice> 
     
                         <corr resp="Wikisource" instant="false">longtemps</corr>
     
                         <corr resp="Furne" instant="false">très longtemps</corr>  
     
                      </choice>
                      un chat nommé 
                      <persName instant="false" full="yes">Pouf</persName> à 
                      <geogName instant="false">Paris</geogName>. 
     
                   </p>
     
                </body>
     
             </text>
     
          </TEI>
       </body>
    </html>
    RÉSULTAT VOULU ?
    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
    <html>
       <head>
          <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
          <title>Article</title>
          <link rel="stylesheet" type="text/css" href="Article.css">
       </head>
       <body>
          <TEI xmlns="http://www.tei-c.org/ns/1.0">
     
             <teiHeader>
     
                <fileDesc>
     
                   <titleStmt>
     
                      <title>Title</title>
     
                   </titleStmt>
     
                   <publicationStmt>
     
                      <p>Publication Information</p>
     
                   </publicationStmt>
     
                   <sourceDesc>
     
                      <p>Information about the source</p>
     
                   </sourceDesc>
     
                </fileDesc>
     
             </teiHeader>
     
             <text>
     
                <body>
     
                   <p>
                      Il était une fois, il y a 
     
                      <choice> 
     
                         <corr resp="Wikisource">longtemps</corr>
     
                         <corr resp="Furne">très longtemps</corr>  
     
                      </choice>
                      un chat nommé 
                      Pouf à 
                      <geogName>Paris</geogName>. 
     
                   </p>
     
                </body>
     
             </text>
     
          </TEI>
       </body>
    </html>

  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,

    Citation Envoyé par NolwennFanTEI Voir le message
    Ai-je tord de vouloir ce résultat ?
    Oui. Soit ce que tu cherches à produire est du HTML, soit ça n'en est pas. Là ça n'en est pas.
    Mais c'est pas grave, le pas HTML on fait des trucs très bien avec. C'est juste que si ce que tu veux n'est pas HTML, tu ne devrais pas essayer de transformer en HTML. Logique.

    Citation Envoyé par NolwennFanTEI Voir le message
    Si je transforme toutes mes balises en span et div, je ne pourrais plus différencier mes deux balises corr (je dois par la suite créer un index).
    Avec les balises modernes tu peux toujours utiliser les attributs data-*.

    Exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <span class="corr" data-resp="Wikisource">longtemps</span>
    <span class="corr" data-resp="Furne">très longtemps</span>
    Avec du plus vieux HTML ça pourrait être plus compliqué... Tout dépendrait de ce que veulent dire ces trucs en réalité mais typiquement ça pouvait se faire comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    <a class="corr" href="#Wikisource">longtemps</a>
    <a class="corr" href="#Furne">très longtemps</a>
    Et quelque part tout en bas de la page,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <div class="resps-list">
      <h2>Liste des resps</h2>
      <ul>
        <li id="Wikisource">Wikisource</li>
        <li id="Furne">Furne</li>
      </ul>
    </div>
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Bonsoir,
    Merci pour votre réponse rapide thelvin.
    Soit ce que tu cherches à produire est du HTML, soit ça n'en est pas. Là ça n'en est pas.
    D'accord.
    Du coup, dans le but de traiter le cas particulier de la balise corr après cela, je me suis mise à produire des balises avec des div et des span pour faire de l'HTML.
    Comme celle-ci, TRANSFORMATION XSLT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
        <xsl:template match="text">
            <xsl:element name="div">
                <xsl:apply-templates/>	
            </xsl:element>
        </xsl:template>
    Le problème, c'est que je ne peux même pas tester ce que vous me proposez parce que toutes mes transformations sont bloquées.
    Dans ma transformation XSLT, conformément à ce que j'ai religieusement recopié en cours, on trouve ceci :
    TRANSFORMATION XSLT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    	<xsl:template match="*">
    		<xsl:element name="span">
    			<xsl:attribute name="class">
    				<xsl:value-of select="name()"/>
    			</xsl:attribute>
    			<xsl:apply-templates/>
    		</xsl:element>
    	</xsl:template>
    On nous a expliqué que ce template allait matcher tout ce qui n'avait pas été traité.
    Cependant, elle transforme toutes mes balises en span, prioritairement sur toutes les autres.
    RESULTAT :
    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
    <?xml version="1.0" encoding="UTF-8"?><span class="TEI">
       <span class="teiHeader">
          <span class="fileDesc">
             <span class="titleStmt">
                <span class="title">Title</span>
             </span>
             <span class="publicationStmt">
                <span class="p">Publication Information</span>
             </span>
             <span class="sourceDesc">
                <span class="p">Information about the source</span>
             </span>
          </span>
       </span>
       <span class="text">
          <span class="body">
             <span class="p">
                Il était une fois, il y a 
                <span class="choice"> 
                <span class="corr">longtemps</span>
                <span class="corr">très longtemps</span>  
                </span>
                un chat nommé <span class="persName">Pouf</span> à <span class="geogName">Paris</span>. 
             </span>
          </span>
       </span>
    </span>
    Je sens que le problème est simple et j'ai tenté de traiter mes balises une à une pour ne pas avoir à utiliser ce template. Mais lorsque je le fait, aucune balise ne s'affiche alors.

  4. #4
    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
    Et donc, comment as-tu tenté cela ?
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    Revoici mon XML :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?>
    <TEI xmlns="http://www.tei-c.org/ns/1.0">
       <teiHeader>
          <fileDesc>
             <titleStmt>
                <title>Title</title>
             </titleStmt>
             <publicationStmt>
                <p>Publication Information</p>
             </publicationStmt>
             <sourceDesc>
                <p>Information about the source</p>
             </sourceDesc>
          </fileDesc>
       </teiHeader>
       <text>
          <body>
             <p>
                Il était une fois, il y a 
                <choice> 
                <corr resp="Wikisource">longtemps</corr>
                <corr resp="Furne">très longtemps</corr>  
                </choice>
                un chat nommé <persName>Pouf</persName> à <geogName>Paris</geogName>. 
             </p>
          </body>
       </text>
    </TEI>
    Et voici ce que j'ai tenté de faire pour le moment en XSLT :
    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:xs="http://www.w3.org/2001/XMLSchema"
        exclude-result-prefixes="xs"
        version="2.0">
        <xsl:output method="xml"/>
     
        <xsl:template match="/">
            <xsl:apply-templates/>	
        </xsl:template>	
     
        <xsl:template match="TEI">
            <xsl:element name="div">
                <xsl:apply-templates select="teiHeader | text"/>	
            </xsl:element>
        </xsl:template>
     
       <xsl:template match="fileDesc | titleStmt | publicationStmt | sourceDesc | title">
            <xsl:element name="span">
                <xsl:apply-templates/>	
            </xsl:element>
        </xsl:template>
     
        <xsl:template match="persName"/>
     
        <xsl:template match="body | choice | geogName">
            <xsl:element name="span">
                <xsl:apply-templates/>	
            </xsl:element>
        </xsl:template>
     
        <xsl:template match="p">
            <xsl:element name="p">
                <xsl:apply-templates/>	
            </xsl:element>
        </xsl:template>
     
        <xsl:template match="corr[@resp='Furne']">
            <xsl:element name="span">
                <xsl:attribute name="data-resp">
                    <xsl:value-of select="local-name()"/>
                </xsl:attribute>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:template>
     
        <xsl:template match="corr[@resp='Wikisource']">
            <xsl:element name="span">
                <xsl:attribute name="data-resp">
                    <xsl:value-of select="local-name()"/>
                </xsl:attribute>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:template>
     
     <!--    <xsl:template match="*">
            <xsl:element name="span">
                <xsl:attribute name="class">
                    <xsl:value-of select="name()"/>
                </xsl:attribute>
                <xsl:apply-templates/>
            </xsl:element>
        </xsl:template>-->
     
        <xsl:template match="text()">
            <xsl:value-of select="."></xsl:value-of>
        </xsl:template>
     
    </xsl:stylesheet>
    Si je ne mets pas le <xsl:template match="*">, aucune de mes balise n'apparait, mais si je le mets, elles deviennent toutes des span.

    RESULTAT :
    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
    <?xml version="1.0" encoding="UTF-8"?><span class="TEI">
       <span class="teiHeader">
          <span class="fileDesc">
             <span class="titleStmt">
                <span class="title">Title</span>
             </span>
             <span class="publicationStmt">
                <span class="p">Publication Information</span>
             </span>
             <span class="sourceDesc">
                <span class="p">Information about the source</span>
             </span>
          </span>
       </span>
       <span class="text">
          <span class="body">
             <span class="p">
                Il était une fois, il y a 
                <span class="choice"> 
                <span class="corr">longtemps</span>
                <span class="corr">très longtemps</span>  
                </span>
                un chat nommé <span class="persName">Pouf</span> à <span class="geogName">Paris</span>. 
             </span>
          </span>
       </span>
    </span>

  6. #6
    Futur Membre du Club
    Femme Profil pro
    Étudiant
    Inscrit en
    Février 2018
    Messages
    9
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2018
    Messages : 9
    Points : 6
    Points
    6
    Par défaut
    J'ai trouvé d'où venait le problème. Lorsqu'on ouvre un nouveau fichier TEI P6 sur Oxygen, celui-ci commence par ces lignes (en violet) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    <?xml version="1.0" encoding="UTF-8"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml" schematypens="http://relaxng.org/ns/structure/1.0"?>
    <?xml-model href="http://www.tei-c.org/release/xml/tei/custom/schema/relaxng/tei_all.rng" type="application/xml"
    	schematypens="http://purl.oclc.org/dsdl/schematron"?>
    Il fallait simplement les supprimer (après avoir vérifié que le document est valide) pour que la transformation fonctionne correctement. Cette solution n'est pas très élégante mais elle fonctionne.

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

Discussions similaires

  1. XML vers HTML - pb avec CDATA
    Par barnamax dans le forum Balisage (X)HTML et validation W3C
    Réponses: 1
    Dernier message: 12/07/2006, 11h37
  2. [Débutante][XSL-FO]Flux XML vers HTML puis vers PDF
    Par norkius dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 03/05/2006, 14h29
  3. [FLASH MX2004] Problème avec un datagrid & xml
    Par cedonline dans le forum Flash
    Réponses: 72
    Dernier message: 15/11/2005, 15h21
  4. Problème avec le parser XML
    Par sheura dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 09/11/2005, 18h26
  5. newbie : fichier xml vers html via command-line
    Par morti dans le forum XML/XSL et SOAP
    Réponses: 1
    Dernier message: 08/11/2005, 07h34

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