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 :

Aide transformation vers HTML, perte de balise


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Aide transformation vers HTML, perte de balise
    Bonjour à tous,

    Je suis assez novice en la question et malgré quelques lectures sur le sujet, j'ai un peu de mal à appréhender mon problème.

    Je suis sur une solution qui tourne correctement, et que je dois simplement modifier.
    Aujourd'hui, dans mon XML, j'ai une balise <renvoi> qui peut se trouver à plusieurs endroits différents.

    Dans ma XSL, mon <renvoi> est traité ainsi :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:template match="types:renvoi">
      <span class="clRenvoi"> <xsl:apply-templates/></span>
    </xsl:template>


    disons que mes <renvoi> ont un style qui les affiche en souligné.

    Ensuite, j'ai des <renvoi> qui se situent dans mes extraits <extrait>, et j'affiche <extrait> comme cela :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <xsl:template match="art:extrait">
      <section class="clInterieurEncadre">
        <span class="clTitreMeta">Extrait :</span>
        <xsl:apply-templates/>
      </section>
    </xsl:template>


    Jusqu'ici tout va bien, cette portion XML :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <extrait>
      <commun:alinea>
        <types:renvoi type="CASS" refid="12-45644" annee="2012" mois="janvier" jour="5">Cass. ass. plén., 5 janvier 2012, n° 12-45644</types:renvoi> 
      </commun:alinea>
    </extrait>

    me renvoi bien une fois transformée :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    <span class="clTitreMeta">Extrait :</span>
    <p><span class="clRenvoi">Cass. ass. plén., 5 janvier 2012, n° 12-45644</span></p>


    La complexité se trouve dans cette partie du XML :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    <meta:sous_titre>
      <types:renvoi type="CASS" refid="12-45644" annee="2012" mois="janvier" jour="5">Cass. ass. plén., 5 janvier 2012, n° 12-45644</types:renvoi>
    </meta:sous_titre>


    ma transformation, à cet endroit est un peu plus complexe :
    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
    <xsl:template match="art:meta|lot:meta">
      <p class="clMeta">
        <span class="clTitleContentHighBlue"><xsl:value-of select="concat(@id,' ')"/></span> <span class="clTitle">(<xsl:value-of select="meta:type_article"/>)</span>
      </p>
      <p class="clMeta">
        <span class="clTitle">Sur-titre : </span><span class="clOnTitleContentHighBlue"><xsl:value-of select="meta:sur_titre"/></span>
      </p>
      <p class="clMeta">
        <span class="clTitle">Titre : </span><span class="clTitleContentHighBlue"><xsl:value-of select="commun:titre"/></span>
      </p>
      <p class="clMeta">
        <span class="clTitle">Sous-titre : </span><span class="clSubTitleContentHighBlue"><xsl:value-of select="meta:sous_titre"/></span>
      </p>
    <xsl:apply-templates select=".//meta:auteur"/>
    </xsl:template>

    à cet endroit, la transformation me donne :
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    <span class="clTitle">Sous-titre : </span>
    <span class="clSubTitleContentHighBlue">Cass. ass. plén., 5 janvier 2012, n° 12-45644</span>


    je perds le renvoi. je ne comprends pas le mécanisme qui fait que, partout ailleurs, lorsque j'ai un <renvoi> il s'affiche avec son style assigné au tout début, mais uniquement sans le <sous_titre> je perd cette information.
    J'ajoute que j'ai essayé de modifier mon XSD afin d'autoriser de de placer mon <renvoi> dans un <commun:alinea> dans le sous_titre, mais cela ne résout pas le problème.

    Merci d'avance a qui voudra se casser un peu la tête, je peux fournir des informations complémentaire au besoin.
    Bonne journée
    Romain

  2. #2
    Modérateur

    Hello,

    le mécanisme c'est que d'habitude tu utilises <xsl:apply-templates> mais là tu utilises <xsl:value-of>.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre à l'essai
    Bonjour thelvin,

    En remplaçant apply-templates par value-of pour le sous-titre, j'obtiens ce message d'erreur sur ma page HTML à la place du sous titre :
    Sous-titre : ERREUR ==> cas non géré : meta:sous_titre

    J'ai essayé de modifier le début en remplaçant <xsl:template match="art:meta|lot:meta"> par <xsl:template match="art:meta|lot:meta|meta:sous_titre">, et cette fois ci j'obtiens :
    Sous-titre :
    ()
    Sur-titre :
    Titre :
    Sous-titre :


    je suis tout ouï si quelqu'un a une idée.
    Bonne journée,
    Romain

###raw>template_hook.ano_emploi###