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?] Gérer l'affichage d'un xml contenant un grand nombre d'éléments (pagination)


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut [XSLT?] Gérer l'affichage d'un xml contenant un grand nombre d'éléments (pagination)
    Bonjour,

    Je dois effectuer une mise en page en XSLT de fichier XML dont le nombre d'éléments peut être très important ( de l'ordre du millier ). J'affiche actuellement l'intégralité de ces éléments sur une page, ce qui peut être gênant du point de vue utilisateur. Je voudrais savoir s'il est possible de n'afficher que des plages de ces éléments par exemple : 1 à 50, 51 à 100, ... en proposant à l'utilisateur de naviguer à travers ces plages ( via des pseudos liens ) et voir même de pouvoir modifier la valeur de ces plages...tout ceci sans avoir à recharger le fichier xml

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Si le xslt ne sert que du coté client à faire la mise en forme html du fichier xml, alors le xml sera de toute façon chargé en mémoire. Par contre avec du javascript transmettant des paramètres au xslt du navigateur tu pourras n'afficher que certain éléments.
    Le javascript sera sans doute différent pour mozilla et internet explorer.
    Si au contraire, il y a un proc xslt sur le serveur, tu pourras ne récupérer qu'un xml segmenté page par page.

  3. #3
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Le xsl(t) ne sert que du côté client en effet et le fait qu'il soit chargé intégralement en mémoire c'est pas non plus un souci ( cela reste raisonnable ). Donc je dois passer par javascript ? A vrai dire je ne vois pas du tout comment faire...je ne suis pas trop expert en xsl / js ( je ne cherche pas un code tout beau tout fait mais juste à comprendre comment le faire ).

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Si on est du coté client, je peux te proposer ce code html avec un javascript maison (il y a sans doute mieux) qui faisait un tri.
    Son seul intéret est de montrer comment donner des paramètres utilisés par le xsl.
    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
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    <html>
     <head>
     <script type="text/javascript">
    var processor;
    var xslt;
    var xmlDoc;
    var xslDoc;
    
     function tri(field,order)
     {	
    	// navigateur basé sur Gecko
        if (window.XSLTProcessor)
    	{
    		xslt = document.implementation.createDocument('', '', null);
    		xslt.async = false;
    		xslt.load("URLCollector.xsl");
    		
    		processor = new XSLTProcessor();
    		processor.reset();
    		processor.importStylesheet(xslt);
    		
    		processor.setParameter(null,"field", field);
    		processor.setParameter(null,"order", order);
    		
    		var resultat = processor.transformToFragment(xmlDoc,document);
    		document.body.innerHTML = ""
    		document.body.appendChild(resultat);
    	}
    	else
    	{
    		var processor = xslt.createProcessor();
    		processor.input = xmlDoc;
    		processor.addParameter("field", field);
    		processor.addParameter("order", order);
    		
    		processor.transform();
    		var xmltrie = processor.output;
    		
    		//document.write(xmltrie);
    		test.innerHTML = xmltrie;
    		
    	}
     }
    
     function tri_init(field,order)
     {
    
     
    	// navigateur basé sur Gecko
        if (window.XSLTProcessor)
    	{
    		 
    		xmlDoc = document.implementation.createDocument('', '', null);
    		
    		
    		
    	}
    	else
    	{
    		// chargement du fichier XML
    		xmlDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
    		// chargement du fichier XSL
    		
    		xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument.3.0");
    		xslDoc.async = false;
    		xslDoc.load("URLCollector.xsl");
    
    		xslt = new ActiveXObject("Msxml2.XSLTemplate.3.0");
    		xslt.stylesheet = xslDoc; 
    		
    		
    	}
    	xmlDoc.async = false;
            //chargement du gros xml
    	xmlDoc.load("URLCollector?xml");	
    	
    	tri(field,order);
     }
     </script>
     </head>
     <body onLoad="tri_init('Utilisateur', 'ascending');">
     <div id="test"></div>
     </body>
     </html>
    Après faut bien sur un xsl qui commence par:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <?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" omit-xml-declaration="yes"/>
    	<xsl:param name="field"/>
    	<xsl:param name="order"/>
    ...

  5. #5
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Merci beaucoup je vais essayer de voir ce que je peux faire. Cela-dit en y réfléchissant, je serais curieux de savoir comment faire pour vraiment charger des parties du xml source sur le serveur :

    Si au contraire, il y a un proc xslt sur le serveur, tu pourras ne récupérer qu'un xml segmenté page par page.

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben il y a quoi sur ton serveur: un serveur PHP, conteneur de servlet java, ... ?
    Je pourrai t'aider que pour java, mais c'est sans doute simple en PHP.

  7. #7
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 42
    Points : 26
    Points
    26
    Par défaut
    Pour faire simple :

    formulaire HTML => Dll ISAPI => génération d'un fichier xml de réponse => redirection sur celui-ci. Le tout tournant sous IIS

  8. #8
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    nous avons des codes sources qui illustrent parfaitement cela : http://xml.developpez.com/sources/?f...NNNONNN#sect10
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

Discussions similaires

  1. [XSLT] parcours et affichage avec balises xml imbriquées
    Par marochlo dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/11/2010, 18h25
  2. Réponses: 18
    Dernier message: 06/07/2009, 16h01
  3. Type d'une colonne contenant de grands nombres
    Par Louis-Guillaume Morand dans le forum Débuter
    Réponses: 3
    Dernier message: 07/07/2008, 14h17
  4. Réponses: 1
    Dernier message: 27/04/2007, 15h03
  5. [XSLT] Affichage des balises xml en html via une xslt
    Par Eileen dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 20/04/2007, 15h53

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