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

Bibliothèques et frameworks PHP Discussion :

[XSL] Plusieurs fichiers xsl


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 215
    Points : 71
    Points
    71
    Par défaut [XSL] Plusieurs fichiers xsl
    Bonjour, j'aimerais creer une page de news, et pour cela j'ai deux fichier .xsl,
    - le premier pour la pagination
    afficher le numerod des page dispo, ...
    - le deuxieme pour les nouveautes

    dans un fichier .xml on peux faire :
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet type="text/xsl" href="index.xsl"?>

    Comment faire dans mon cas si il y a deux fichier .xsl ?

  2. #2
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Le rapport avec PHP ?

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 215
    Points : 71
    Points
    71
    Par défaut
    Bah je creer la page des news, il nous faut bien du php...

  4. #4
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Bah désolé, mais tu n'a pas sorti un code php dans ton message initial, je peux pas deviner Néanmoins je vois toujours pas le rapport entre ton problème d'XSLT et PHP. Peut-etre qu'un peu de code aiderait ?

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 215
    Points : 71
    Points
    71
    Par défaut
    mon fichier index.php
    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
    <?php
    if ( !$part = array_item($_GET, 'part') )
    	$part = 1;
     
    $db = new MyDb;
     
    /* Compte le nombre de nouveautes */
    $requete = "SELECT	COUNT(NrNouveaute) as NombreNouveautes
    			FROM	n8_nouveautes";
     
    if ( ($row = $db->querySingleItem($requete)) != -1 )
    {
    	/* Calculs pour les pages */
    	$NombrePages = ceil($row->NombreNouveautes/$config['NouveautesParPage']);
    	$PremiereNouveaute = ($part-1) * $config['NouveautesParPage'];
     
    	/* Récupération des nouveautes */
    	$requete = "SELECT 		NrNouveaute, DATE_FORMAT(Date, '%d-%m-%y') as DateN, Image, Titre, Texte
    				FROM 		n8_nouveautes
    				ORDER BY	Date DESC
    				LIMIT		".$PremiereNouveaute.", ".$config['NouveautesParPage'];
     
    	/* FICHIER XML */
    	$xml = themeH("modules/nouveautes/index.xsl");
     
    	if ( $result = $db->queryObjectArray($requete) )
    	{
    		/* Appel a la fct pagination si il y a plus d'une page */
    		if ($NombrePages > 1)
    		{
    			$xml .= pagination(build_href('index.php?page=nouveautes'), $part, $NombrePages);
    		}
     
    		/* boucle affichant les nouveautes */
    		foreach($result as $nouveaute)
    		{
    			/* recherche si il existe des commentaires */
    			$requete = "SELECT	COUNT(NrCommentaire) as NombreCommentaires
    						FROM	n8_commentaires
    						WHERE	NrNouveaute = ".$nouveaute->NrNouveaute;
     
    			if ( $row = $db->querySingleItem($requete) )
    				$NombreCommentaires = $row->NombreCommentaires;
    			else
    				$NombreCommentaires = 0;
     
    			$xml .=	"<nouveaute id=\"".$nouveaute->NrNouveaute."\">\n".
    						"<date>$nouveaute->DateN</date>\n".
    						"<image>".$config['IMGMINI_NouveautesRepertoire'].$nouveaute->Image."</image>\n".
    						"<titre>".htmlentities($nouveaute->Titre, ENT_QUOTES)."</titre>\n".
    						"<texte>".nl2br(bbcode(htmlentities($nouveaute->Texte, ENT_QUOTES)))."</texte>\n".
    						"<commentaire nombre=\"".$row->NombreCommentaires."\">".build_href("index.php")."</commentaire>\n".
    					"</nouveaute>\n";
    		}
     
    		$db->close();
     
    		/* Appel a la fct pagination si il y a plus d'une page */
    		if ($NombrePages > 1)
    			$xml .= pagination('index.php?page=nouveautes', $part, $NombrePages);
    	}
     
    	$xml .= themeF();
     
    	echo $xml;
    }
    ?>
    ma fct pagination :
    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
    function pagination($url, $part,$NombreDePage)
    {
    	$pagination =	"<pagination>\n".
    						"<premier id=\"1\">index.php?page=nouveautes&amp;part=1</premier>\n".
    						"<precedent id=\"".($part-1)."\">index.php?page=nouveautes&amp;part=1</precedent>\n".
    						"<part id=\"".$part."\">index.php?page=nouveautes&amp;part=2</part>\n".
    						"<suivant id=\"".($part+1)."\">index.php?page=nouveautes&amp;part=3</suivant>\n".
    						"<dernier id=\"".$NombreDePage."\">index.php?page=nouveautes&amp;part=3</dernier>\n";
     
    						for ( $i=1; $i<=$NombreDePage; $i++ )
    						{
    							$pagination .=	"<page>".$i."</page>\n";
    						}
     
    	$pagination .=	"</pagination>\n";
     
    	return $pagination;
    }
    mon fichier index.xsl
    Code XML : 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
    <?xml version="1.0" encoding="iso-8859-1"?><!DOCTYPE xsl:stylesheet  [
    	<!ENTITY nbsp   " ">
    	<!ENTITY copy   "©">
    	<!ENTITY reg    "®">
    	<!ENTITY trade  "™">
    	<!ENTITY mdash  "—">
    	<!ENTITY ldquo  "“">
    	<!ENTITY rdquo  "”"> 
    	<!ENTITY pound  "£">
    	<!ENTITY yen    "¥">
    	<!ENTITY euro   "€">
    ]>
    <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 XHTML 1.0 Transitional//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
    <xsl:template match="/">
     
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"/>
    <title>Untitled Document</title>
    </head>
     
    <body>
    	<table style="width:100%;">
    		<xsl:for-each select="/racine/nouveaute">
    			<tr>
    				<xsl:attribute name="id">
    				<xsl:value-of select="@id" />
    				</xsl:attribute>
    				<td style="width:10%;">Postée le <xsl:value-of select="date" /></td>
    				<td style="text-align:center;"><xsl:value-of select="titre" /></td>
    				<td style="width:10%;">&nbsp;</td>
    			</tr>
    			<tr>
    				<td colspan="3">
    					<div>
    						<img>
    							<xsl:attribute name="src"><xsl:value-of select="image" /></xsl:attribute>
    							<xsl:attribute name="style">float:left;</xsl:attribute>
    						</img>
    						<xsl:value-of select="texte" />
    					</div>
     
    					<div style="text-align:right;">
    						<xsl:choose>
    							<xsl:when test="commentaire/@nombre = 0">
    								<a>
    									<xsl:attribute name="href">
    									<xsl:value-of select="commentaire" />
    									</xsl:attribute>
    									Ajouter un commentaire
    								</a>
    							</xsl:when>
    							<xsl:otherwise>
    								<a>
    									<xsl:attribute name="href">
    									<xsl:value-of select="commentaire" />
    									</xsl:attribute>
    									Commentaire ( <xsl:value-of select="commentaire/@nombre" /> )
    								</a>
    							</xsl:otherwise>
    						</xsl:choose>
    					</div>
    				</td>
    			</tr>
    		</xsl:for-each>
    	</table>
    </body>
    </html>
     
    </xsl:template>
    </xsl:stylesheet>

    Mon fichier pagination .xsl
    Code XML : 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
    <table>
    	<tr>
    		<xsl:choose>
    			<xsl:when test="/racine/pagination/part/@id != 1">
    				<td>
    					<a>
    						<xsl:attribute name="href">
    						<xsl:value-of select="/racine/pagination/premier" />
    						</xsl:attribute>
    						PREMIER
    					</a>
    				</td>
    				<td>|</td>
    				<td>
    					<a>
    						<xsl:attribute name="href">
    						<xsl:value-of select="/racine/pagination/precedent" />
    						</xsl:attribute>
    						PRECEDENT
    					</a>
    				</td>
    				<td>|</td>
    			</xsl:when>
    			<xsl:otherwise>
    				<td></td>
    				<td></td>
    				<td></td>
    				<td></td>
    			</xsl:otherwise>
    		</xsl:choose>
     
    		<xsl:for-each select="/racine/pagination/page">
    			<td>
    				<xsl:choose>
    					<xsl:when test="current() != /racine/pagination/part/@id">
    						<a>
    							<xsl:attribute name="href">
    							<xsl:value-of select="/racine/pagination/part" />
    							</xsl:attribute>
    							<xsl:value-of select="current()" />
    						</a>
    					</xsl:when>
    					<xsl:otherwise>
    						<xsl:value-of select="current()" />
    					</xsl:otherwise>
    				</xsl:choose>
    			</td>
    			<td>
    				<xsl:if test="/racine/pagination/part/@id != /racine/pagination/dernier/@id">|</xsl:if>
    			</td>
    		</xsl:for-each>
     
    		<xsl:choose>
    			<xsl:when test="/racine/pagination/part/@id != /racine/pagination/dernier/@id">
    				<td>
    					<a>
    						<xsl:attribute name="href">
    						<xsl:value-of select="/racine/pagination/suivant" />
    						</xsl:attribute>
    						SUIVANT
    					</a>
    				</td>
    				<td>|</td>
    				<td>
    					<a>
    						<xsl:attribute name="href">
    						<xsl:value-of select="/racine/pagination/dernier" />
    						</xsl:attribute>
    						DERNIER
    					</a>
    				</td>
    			</xsl:when>
    			<xsl:otherwise>
    				<td></td>
    				<td></td>
    				<td></td>
    			</xsl:otherwise>
    		</xsl:choose>
    	</tr>
    </table>

    J'appel la fct themeH(index.xsl), alors que la fct pagination devrait etre interpreter avec pagination.xsl...

  6. #6
    Expert éminent Avatar de Mr N.
    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    5 418
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 5 418
    Points : 6 449
    Points
    6 449
    Par défaut
    Je commence (enfin) à cerner un peu plus ton besoin.

    en xsl, tu peux faire référence à une autre feuille de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:include href="..."/>
    A index.xsl de détecter si il est nécessaire d'appeler pagination.xsl ou pas. Je ne sais pas par contre si ca marche dans tous les navigateurs, à tester.

    Sinon pourquoi ne pas inclure de toute facon les éléments de pagination, sachant que quand il y a une seule page, la première égale la dernière...

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Décembre 2005
    Messages
    215
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Belgique

    Informations forums :
    Inscription : Décembre 2005
    Messages : 215
    Points : 71
    Points
    71

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

Discussions similaires

  1. Définir plusieurs fichiers xsl
    Par doudounico dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 03/03/2010, 13h37
  2. Réponses: 4
    Dernier message: 03/03/2008, 13h30
  3. [XSLT]un fichier xsl et plusieurs fichiers xml
    Par akhtira dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 04/02/2008, 11h03
  4. [XSL][FOP] un FO plusieurs fichiers SVG
    Par Sornix dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 24/11/2006, 12h01
  5. [XSL]récupérer une valeur de plusieurs fichiers XML
    Par snoop dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 05/02/2006, 00h32

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