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 :

[XSLT] Redondance de balises


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut [XSLT] Redondance de balises
    Bonjour,

    Suite à la reprise d'un site pour une société, j'ai découvert que celui-ci avait été codé grâce aux xslt - xml...

    Bon gré, mal gré, je suis en train d'apprendre le fonctionnement de ce duo, et je rencontre un léger problème de redondance...

    En gros, le fichier html/php généré créé une redondance au niveau de la balise <para>

    j'ai une structure html genre :
    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <p>
      <para> le texte </para>
    </p>

    la ou je ne devrais avoir qu'en théorie
    Je sens que c'est tout bête, mais aidez-moi please ^_^

    un exemple d'un fichier xml de base et sa feuille de style 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
    <?xml version="1.0"?>
    <!DOCTYPE article PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "http://www.oasis-open.org/docbook/xml/4.1.2/docbookx.dtd" [
    ]>
    <article>
    		<para>
    			<table align="center">
    				<tr>
    					<td>TEXTE+BALISES HTML</td>
    				</tr>
    			</table>
    		</para>
    	<title>TITRE 1</title>
    	<sect1>
    		<title>TITRE 2</title>
    		<title>SOUS-TITRE</title>
    		<formalpara>
    			<para>TEXTE+BALISES HTML</para>
    			<para>TEXTE+BALISES HTML</para>
    		</formalpara>
     
    		<formalpara>
    			<para>TEXTE+BALISES HTML</para>
    			<para>TEXTE+BALISES HTML</para>
    		</formalpara>
     
    		<formalpara>
    			<para>TEXTE+BALISES HTML</para>
    			<para>TEXTE+BALISES HTML</para>
    		</formalpara> 
    	</sect1>
    	<sect1>	
    		<formalpara>
    			<para>TEXTE+BALISES HTML</para>
    			<para>TEXTE+BALISES HTML</para>
    		</formalpara> 
     
    ...........................ETC...................................
     
    	</sect1>
    </article>






    Code XSL : 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
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    <?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="html"
          encoding="ISO-8859-1"
          doctype-public="-//W3C//DTD HTML 4.01//EN"
          doctype-system="http://www.w3.org/TR/html4/strict.dtd"
          indent="yes" />
     
      <!-- CE PARAMETRE DEFINIT LE REPERTOIRE RACINE DES IMAGES -->
      <xsl:param name="root" />
      <!-- DERNIERE MODIFICATION -->
      <xsl:param name="time" />
      <!-- NOM DU FICHIER -->
      <xsl:param name="article" />
      <!-- EST-CE L'INDEX ? -->
      <xsl:param name="index" />
      <!-- ARTICLE SUIVANT -->
      <xsl:param name="prev" />
      <!-- ARTICLE PRECEDENT -->
      <xsl:param name="next" />
      <!-- DERNIER ARTICLE -->
      <xsl:param name="last" />
      <!-- RACINE DU SITE -->
      <xsl:param name="siteRoot" />
      <!-- LANGUE -->
      <xsl:param name="lang" />
     
     
        <!--Introduction du code html dans les articles-->
     
    	<xsl:template name="Html" match="a | applet | b | big | br | caption | cite |
    code | col | colgroup | dd | div | dl | dt | em | font | form | frame |
    frameset | head | h1 | h2 | h3 | h4 | h5 | h6 | hr | i | iframe | img
    | link | li | map | noframes | ol | p | param | pre | s | small | span | strong | style | sub | sup | td | th | title | tr | tt | ul | var | table" >
    		<xsl:copy>
    			<xsl:copy-of select="@*"/>
    			<xsl:apply-templates/>
    		</xsl:copy>
    	</xsl:template> 
     
    	<!-- RACINE DU DOCUMENT -->
    	<xsl:template match="/">
    		<xsl:apply-templates/>
    	</xsl:template>
     
    	<xsl:template match="article">
     
    		<xsl:for-each select="para">		
        			<xsl:call-template name="paragraph"/>
    		</xsl:for-each>
     
    		<h1> <xsl:value-of disable-output-escaping="yes" select="title" /> </h1>
     
    		<xsl:for-each select="sect1"> 
        		<xsl:if test="title">
    				<h2>
    					<xsl:value-of select="title"/>
    				</h2>
        		</xsl:if>
    			<xsl:for-each select="formalpara">
    				<xsl:if test="title">
    					<h3>
    						<xsl:value-of select="title"/>
    					</h3>
        			</xsl:if>
     
        				<xsl:for-each select="para">	
    					<p>	
        					<xsl:call-template name="paragraph"/>
    					</p>
    					</xsl:for-each>
     
     
    			</xsl:for-each>
    		</xsl:for-each>
    	</xsl:template>
     
    	<xsl:template  match="title" name="titreLong">
       		<xsl:call-template name="Html"/>
    	</xsl:template>
     
    	<xsl:template match="article/sect1/formalpara/para" name="paragraph"> 
    		<xsl:call-template name="Html"/>
    	</xsl:template> 
     
    </xsl:stylesheet>

  2. #2
    Membre éclairé
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Points : 841
    Points
    841
    Par défaut
    pourquoi tu as des <xsltemplate> avec "name" et "match"?

  3. #3
    Membre éclairé Avatar de luta
    Inscrit en
    Novembre 2003
    Messages
    1 038
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 1 038
    Points : 786
    Points
    786
    Par défaut
    hummm remplace
    le match "article/sect1/formalpara/para"
    par "para"

  4. #4
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2006
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Eh bien j'ai viré deux trois trucs dans le code xsl, en suivant vos conseils, mais ca change rien...

    En html, il me génère encore des balises <para>...c'est incompréhnesible...

    Le code modifié

    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
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
       <xsl:output 
          method="html"
          encoding="UTF-8"
          doctype-public="-//W3C//DTD HTML 4.01//EN"
          doctype-system="http://www.w3.org/TR/html4/strict.dtd"
          indent="yes" />
     
      <xsl:param name="root" />
      <xsl:param name="time" />
      <xsl:param name="article" />
      <xsl:param name="index" />
      <xsl:param name="prev" />
      <xsl:param name="next" />
      <xsl:param name="last" />
      <xsl:param name="siteRoot" />
      <xsl:param name="lang" />
     
     
        <!--Introduction du code html dans les articles-->
        <xsl:template name="Html" match="a | applet | b | big | br | caption | cite |
    code | col | colgroup | dd | div | dl | dt | em | font | form | frame |
    frameset | head | h1 | h2 | h3 | h4 | h5 | h6 | hr | i | iframe | img
    | link | li | map | noframes | ol | p | param | pre | s | small | span | strong | style | sub | sup | td | th | title | tr | tt | ul | var | table" >
            <xsl:copy>
                <xsl:copy-of select="@*"/>
                <xsl:apply-templates/>
            </xsl:copy>
        </xsl:template> 
     
        <!-- RACINE DU DOCUMENT -->
        <xsl:template match="/">
            <xsl:apply-templates/>
        </xsl:template>
     
        <xsl:template match="article">
     
            <xsl:for-each select="para">        
                    <xsl:call-template name="Html"/>
            </xsl:for-each>
     
            <h1> <xsl:value-of disable-output-escaping="yes" select="title" /> </h1>
     
            <xsl:for-each select="sect1"> 
                <xsl:if test="title">
                    <h2> <xsl:value-of select="title"/> </h2>
                </xsl:if>
     
                <xsl:for-each select="formalpara">
                    <xsl:if test="title">
                        <h3> <xsl:value-of select="title"/> </h3>
                    </xsl:if>
     
                    <xsl:for-each select="para">    
                        <p> <xsl:call-template name="Html"/> </p>
                    </xsl:for-each>
                 </xsl:for-each>
            </xsl:for-each>
     
        </xsl:template>
     
    </xsl:stylesheet>

Discussions similaires

  1. [XSLT] Problème de balise
    Par Oberown dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 03/10/2006, 12h23
  2. [XSLT]Insérer une balise meilleur moyen
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 27/09/2006, 10h56
  3. [XSLT] Filtrer certaines balises d'un fichier XML
    Par arthix dans le forum XSL/XSLT/XPATH
    Réponses: 6
    Dernier message: 07/07/2006, 12h21
  4. [XSLT]Sortir les balise d'un namespace d'un XML
    Par virgul dans le forum XSL/XSLT/XPATH
    Réponses: 11
    Dernier message: 12/04/2005, 11h30
  5. [Documentation][XSLT][XSLFO]Les balises xslfo
    Par Lydiane dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2002, 11h31

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