Page 1 sur 1

XML et calendrier

Publié : 06 mars 2017, 20:55
par chestercat
Bonjour !

J'ai créé une base de donnée de projets en XML.
Via XSL j'aimerais que s'affiche un calendrier, que l'on puisse y sélectionner une date précise, et que ensuite tous les projets à livrer avant cette date s'affiche sur une page.
Alors je suppose que je dois utiliser un formulaire ? Est-ce possible ?

Voici un extrait de mon XML :
<BASE>
<project num="DN001" type="film">
		<title>Moana</title>
		<client>Disney</client>
		<deadline>
			<day>24</day>
			<month>04</month>
			<year>2017</year>
		</deadline>
</project>
</BASE>
Voici ce qui existe de mon XSL pour l'instant (il s'agit des informations que je voudrais voir s'afficher, mais il faut que je trouve un moyen d'afficher celles-ci en fonction de la date choisie dans le formulaire) :
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="BASE">
<html>
<body>
<table>
<tr>
<th>Project ID</th>
<th>Title</th>
<th>Client</th>
<th>Deadline</th>
</tr>
<xsl:for-each select="./project">
<tr>
<td><xsl:value-of select=".[email protected]"/></td>
<td><xsl:value-of select="./title"/></td> 
<td><xsl:value-of select="./client"/></td> 
<td><xsl:value-of select="./deadline"/></td>   
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Si vous avez des pistes à me donner ça m'aiderait beaucoup, je bloque dessus depuis un moment. Merci beaucoup !! :)

Re: XML et calendrier

Publié : 07 mars 2017, 11:46
par moogli
salut,

tu peux passer des paramètres à ta xsl comme ici : http://stackoverflow.com/questions/1278 ... stylesheet
voir avec php : http://php.net/manual/en/xsltprocessor.setparameter.php

ensuite un if pour afficher pour pas les données.
vu que je suis pas une bête en XSL et que tu as trois champs pour la date j'ai fait un truc un peu basique

D'abord le php
<?php
$xsl = new DOMDocument;
$xsl->load('test.xsl');
$proc = new XSLTProcessor;
$proc->importStyleSheet($xsl);

$xml = new DOMDocument;
$xml->loadXML('<BASE>
<project num="DN001" type="film">
    <title>Moana</title>
    <client>Disney</client>
    <deadline>
      <day>24</day>
      <month>04</month>
      <year>2017</year>
    </deadline>
</project>
</BASE>');
$proc->setParameter('', 'year', 2017);
$proc->setParameter('', 'month', 4);
$proc->setParameter('', 'day', 29); // change ici par quelque chose inférieur a 24 pour ne pas avoir la ligne de l'exemple
echo $proc->transformToXML($xml);
ensuite la xsl, indenté, parce que c'est plus facile a lire ;)
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <!-- Les parametres que l'on va utiliser ensuite, tu met un $ devant le nom, comme en php, pour l'utiliser -->
    <xsl:param name="day"/>
    <xsl:param name="month"/>
    <xsl:param name="year"/>
    <xsl:template match="BASE">
        <html>
            <body>
                <table>
                    <tr>
                        <th>Project ID</th>
                        <th>Title</th>
                        <th>Client</th>
                        <th>Deadline</th>
                    </tr>
                    <xsl:for-each select="./project" >
                        <!-- Un p'tit if, pense à échapper les chevrons -->
                        <xsl:if test="(deadline/year <= $year) and (deadline/month <= $month) and (deadline/day <= $day)">
                            <tr>
                                <td><xsl:value-of select=".[email protected]"/></td>
                                <td><xsl:value-of select="./title"/></td> 
                                <td><xsl:value-of select="./client"/></td> 
                                <td><xsl:value-of select="./deadline"/></td>   
                            </tr>
                        </xsl:if>
                    </xsl:for-each>
                </table>
            </body>
        </html>
    </xsl:template>
</xsl:stylesheet>

voilà simple et fonctionnel ;)


@+

Re: XML et calendrier

Publié : 07 mars 2017, 12:19
par chestercat
Merci pour ta réponse!
Je comprends par contre pas trop où mettre le php, est-ce que je l'insère dans le fichier .xsl ?

Re: XML et calendrier

Publié : 07 mars 2017, 16:03
par moogli
ben il te faut bien quelque chose pour appliquer la xsl au xml et vue que l'on est sur phpfrance je t'ai fait un exemple avec php ;)
A priori tu génère le html depuis ton html et un formulaire html à été posté avec les infos de dates dedans.
si c'est le cas mon code reflète ce que tu dois surement déjà faire pour parser le xml.

si tu utilise autre chose pour la transfo xsl c'est avec ce langage la qu'il faut que tu vois pour passer le paramètre.

bref c'est juste un exemple si tu n'en a pas besoin ce n'est pas grave la partir xsl est quand même bonne :mrgreen:

@+