JeuWeb - Crée ton jeu par navigateur
CSS et/ou XSLT? - Version imprimable

+- JeuWeb - Crée ton jeu par navigateur (https://jeuweb.org)
+-- Forum : Discussions, Aide, Ressources... (https://jeuweb.org/forumdisplay.php?fid=38)
+--- Forum : Programmation, infrastructure (https://jeuweb.org/forumdisplay.php?fid=51)
+--- Sujet : CSS et/ou XSLT? (/showthread.php?tid=814)

Pages : 1 2 3 4


RE: CSS et/ou XSLT? - Sephi-Chan - 19-02-2007

Super, un nouvel intervenant !?

Tu aurais un lien vers ton site géré de cette manière voire un petit fragment de code source pour voir comment c'est mis en place ?

Je cherchais des raisons valable de m'y mettre, la tienne en est surement une.

Et en ce qui concerne purement le jeu, tu te sers de fichier XML ? Si oui, pourquoi ?


Sephi-Chan


RE: CSS et/ou XSLT? - Sephi-Chan - 19-02-2007

Voila mon premier essai de page XML avec sa feuille XLS

Comme je n'ai mis que le rendu que donne mon script PHP, voici la source de la page PHP qui génère le fichier XML (j'utilise la librairie (native en PHP5) SimpleXML) :

Code PHP :
<?php 
mysql_connect
('localhost', 'root', '');
mysql_select_db('essais_xml');
$sql1 = sprintf("SELECT nom, CC, F, E, Ag, PV, A FROM personnages");
$sql2 = mysql_query($sql1);

header('Content-type: text/xml');
$str = '<?xml version="1.0" encoding="iso-8859-1"?>
<?xml-stylesheet type="text/xsl" href="style.xsl"?>
<joueurs>
</joueurs>'
;

$xml = new SimpleXMLElement($str);

while(
$sql = mysql_fetch_assoc($sql2)){
$joueur = $xml->addChild('joueur');

$nom = $joueur->addChild('info', $sql['nom']);
$nom->addAttribute('type', 'Nom');

$cc = $joueur->addChild('info', $sql['CC']);
$cc->addAttribute('type', 'CC');

$f = $joueur->addChild('info', $sql['F']);
$f->addAttribute('type', 'F');

$e = $joueur->addChild('info', $sql['E']);
$e->addAttribute('type', 'E');

$ag = $joueur->addChild('info', $sql['Ag']);
$ag->addAttribute('type', 'Ag');

$pv = $joueur->addChild('info', $sql['PV']);
$pv->addAttribute('type', 'PV');

$a = $joueur->addChild('info', $sql['A']);
$a->addAttribute('type', 'E');

}

echo
$xml->asXML();
?>

J'ai conscience de la lourdeur de mon code PHP, m'enfin je demande votre indulgence, tout ce que j'ai mis là c'est ce que j'ai appris ce matin.
Si vous avez des suggestions, n'hésitez pas Smile.

Sephi-Chan


RE: CSS et/ou XSLT? - Roworll - 19-02-2007




RE: CSS et/ou XSLT? - Sephi-Chan - 19-02-2007

Hm, très beau post !

Rempli d'exemples intéressants.

Ce que je trouve regrettable, c'est le peu de documentation sur XSL, je n'ai pas trouvé de site parlant du "\", je ne sais pas trop ce que c'est, si c'est un masque Xpath ou quoi que ce soit.

La page dont tu as donné l'URL (http://vanguard.steel-titans.net/) est superbe, j'aimerai beaucoup comprendre le fonctionnement des classements effectué après un click sur l'entête d'une colonne.

Cela pourrait sans doute se faire en JS, mais il faut avouer que c'est tout de même mieux si on passe par un langage standardisé et qui peut être réutilisé sur d'autres pages.


Sephi-Chan


RE: CSS et/ou XSLT? - Roworll - 19-02-2007

Le tri sur le clic d'une colonne... c'est du JS.
Seul le tri affiché au chargement de la page est le fruit de la transformation XSL.

XPath est simplement un language de requête sur les pages XML.

/ correspond par exemple à la racine du document.

Si tu veux plus d'infos (en anglais), je te conseille http://www.w3schools.com/xpath/xpath_syntax.asp


RE: CSS et/ou XSLT? - Sephi-Chan - 19-02-2007

Et l'ordre du tri est fait en JS également ?

Merci pour le lien sur la doc, je bookmark et je regarderais ça ce soir Smile.


RE: CSS et/ou XSLT? - Roworll - 19-02-2007

Le premier affichage (trié par noms) est effectué par le <xslConfusedort select="..."/> après les <xsl:for-each select = "...">

Pour le tri via JS (et la je dévie un peu du sujet), voici le code
Code PHP :
<?php 
<script language="javascript" type="text/javascript">
//Variables statiques pour le tri
var toSort='';
var
aSort=new Array();

function
sort(x,v){
var
a=new Array();
typSort=v;
var
t=x.parentNode.parentNode;

//Détermination du sens de tri
if(!aSort[t.id]){
aSort[t.id]=new Array();
aSort[t.id][2]=1;
} else {
if(
aSort[t.id][1]==x.cellIndex) {
aSort[t.id][2]*=-1;
} else {
aSort[t.id][2]=1;
}
}
aSort[t.id][1]=x.cellIndex
aSort
[t.id][0]=x.cellIndex;
toSort=t.id;

//Passage de la table en tableau js
for(var r=1;r<t.rows.length;r++){
a[r-1]=new Array();
for(var
c=0;c<t.rows[r-1].cells.length;c++){
a[r-1][c]=t.rows[r].cells[c].innerHTML;
}
}
//Tri effectif de la table
a.sort(sortTable);
//suppression des anciennes lignes
while(t.rows.length>1) t.deleteRow(t.rows[1].rowIndex);

//Réaffichage des nouvelles lignes
for(var r=0;r<a.length;r++){
nr=t.insertRow(r+1);
for(var
c=0;c<a[r].length;c++){
nc=nr.insertCell(c);
nc.innerHTML=a[r][c];
}
}
}

//Fonction de tri custom
function sortTable(e1,e2){
if(
typSort==0){
if(
stripHTML(e1[aSort[toSort][0]]) >= stripHTML(e2[aSort[toSort][0]])){
r=1;
} else {
r=-1;
}
} else {
r=e1[aSort[toSort][0]] - e2[aSort[toSort][0]]
}
return
r * aSort[toSort][2];
}

//Suppression des tags HTML pour trier sur la valeur Text réelle
function stripHTML(oldString) {
return
oldString.replace(/<[^>]*>/g, "");
}
</
script>

J'ai mis un onClick() sur les entêtes de colonne qui prends comme premier paramètre l'objet appelant (this) et en second 0 si on trie par ordre Alpha ou 1 pour un tri numérique.

Attention, c'est une fonction toute pourrie qui ne fait que conserver la valeur des cellules, pas leur mise en forme.


RE: CSS et/ou XSLT? - Sephi-Chan - 19-02-2007

Merci pour la fonction, je me pencherai dessus pour la comprendre Wink.

C'est fou, on peut faire plein de choses avec Javascript, mais j'hésite à en utiliser pour mon jeu dans le sens où tout le monde ne l'active pas. Toutefois, les gens qui désactivent JS ne sont, je pense, pas le genre de personnes qui jouent aux jeux par navigateur. Je ne sais pas trop quoi penser. Dans un sens, il suffit de faire des comportement alternatifs quand JS n'est pas activé...


Sephi-Chan


RE: CSS et/ou XSLT? - zzarbi - 20-02-2007

Bon... vous parlez d'un gain réel entre un moteur de template traditionnel (genre Smarty) et ce genre de procédé.. quelqu'un aurait t-il des chiffres ???
C'est pas que je ne vous croient pas, loins de là je voit bien que ça allège le serveur, mais j'aimerais savoir s'il l'allège suffisament pour que je veuille utiliser ce procédé dans mon framework... Si je dois changé je dois le faire maintenant...

Des chiffres pourrait me faire changer d'avis ^^


RE: CSS et/ou XSLT? - Sephi-Chan - 20-02-2007

Ce n'est pas du tout la même chose, du moins, je crois.

A la limite tu peux combiner les deux en utilisant le XML dans ton fichier gabarit, et lui appliquer une feuille de style XSL. Avec ce que j'ai pu lire, je pense que tu pourrais même faire une sortie de ton site sur plusieurs supports, genre xHTML (pratique :p), WML (comme ça les gens peuvent jouer depuis leur téléphone portable s'ils ont le WAP Smile), voire même d'autres supports.


Sephi-Chan