Bienvenue sur JeuxOnLine - MMO, MMORPG et MOBA !
Les sites de JeuxOnLine...
 

Panneau de contrôle

Recherche | Retour aux forums

JOL Archives

Chroniques XML

Par Moonheart le 26/4/2002 à 21:56:43 (#1352011)

Question: Est-ce que quelqu'un connais l'adresse d'un site utilisant les fichiers XML de Camelot-Europe ou de Camelotherald?

Parce que j'ai essayé d'en faire quelque chose mais je me heurte à un ennuyeux problèmes à ce sujet et j'aimerais bien avoir un autre site pour éplucher son code source...

Merci d'avance.

Par Mael Thagg le 27/4/2002 à 11:04:16 (#1354245)

J'ai commencé à exploiter çà à cette adresse :

www.nicae.com/et-daoc rubrique Serveurs

C'est en ASP/XSL. Si tu veux les codes, pas de problème ;)

Une trés bonne adresse : http://www.laltruiste.com/coursxsl/sommaire.html

Par Moonheart le 27/4/2002 à 15:31:12 (#1355819)

Mon problème, c'est que je cherche une solution plus "générique"...

Genre XSL/XML pur.

Au pire, si je trouvais du Javascript, ca me suffirais mais je préfererais éviter les solutions lourdes style ASP / PHP

Mon problème est le suivant:

Pour activer automatiquement une feuille XSL, j'ai besoin qu'elle soit présente dans le tag "?xml-stylesheet?" du fichier XML.

Or, le fichier XML d'origine ne m'appartenant pas, je ne peux bien sur pas y mettre ce tag.... CQFD

J'ai donc essayé les solutions suivantes:

solution 1 - faire une feuille XML vide (juste l'élément racine vide) avec l'appel a ma feuille XSL... dans les "matchs" de ma feuilles XSL, utiliser la méthode primitive "Document" de XPath pour traiter le fichier externe de GOA plutot que mon fichier XML d'origine

problème: les outils Microsoft ne reconnaissent même pas la méthode document(url)... bonjour l'implémentation incomplete!!!!

solution 2 - faire une feuille XML possèdant en seul node fils du node-document un X-Include ( voir W3C a ce sujet)

problème: aucun browser n'a encore implémenté cette recommandation semble-t'il donc pas d'include pour le XML possible

solution 3 - en désespoir de cause, j'ai voulu utiliser Javascript. Je récup ainsi un objet DOM du fichier de GOA et le traite en direct avec les méthodes de base des objets Node et NodeList pour écrire mon document avec la méthode "document.write(string)"

problème: la seule solution que j'ai trouvé pour récup l'objet DOM c'est de passer par les objets ActiveX qui, si le lecteur à bien configuré son ordinateur sont désactivés afin d'éviter que les virus ne profitent des multiples failles qu'ils contienent :( Donc quand je lance ma page en local, pas de prob, ca fonctionne, mais si je la lance du serveur distant, j'ai le droit à un joli "Acces Denied" quand je tente de charger le fichier de GOA

(NB: mon script est dans la page http://perso.wanadoo.fr/sentier.ombres/ysstate.htm si tu le charges en local, tu verras qu'il marche, mais normalement en distant tu auras une erreur de type "Acces Denied" à la ligne 166)




Donc, si tu as une solution a ca qui n'utiliserait pas ASP, ca règlerais complétement mon problème.

Merci d'avance.

Par Mael Thagg le 28/4/2002 à 10:21:59 (#1360892)

Ouhla !

Tu es nettement plus avancé que moi ! Je débute à peine en XSL ;)

J'ai bien vu sur le site dont je te parlais des références à XPath et autres, mais je me suis pas encore penché sur tout çà :(

Par contre tu dis ASP/PHP solutions lourdes... Heu, pourquoi ? La page ASP qui appelle l'XSL est minuscule et visiblement c'est pas trop long à charger...

En ce qui concerne Javascript sur feu le forum officiel y'avait eu un trés intéressant thread (qui m'a permi de démarrer) dans lequel y'avait un script, que bien sûr j'ai pas gardé :sanglote: Mais bon çà existe...

Désolé de ne pas pouvoir t'aider...

Par Moonheart le 28/4/2002 à 14:44:06 (#1362617)

XPath est le langage que tu utilises dans l'attribut "match" de tes tags XSL

La plupart du temps, les pages XSL n'exploitent que les formulations les plus simples de XPath comme:

"/" l'élément racine de l'arbre XML
"a" un tag de l'arbe XML
"a/b" un tag qui serait le fils d'un tag de l'arbe

mais le langage XPath permet des choses beaucoup plus fun en théorie... du genre:

"document('file.xml')/a//b[@c='bleu']/.."
c'est a dire n'importe quel tag père d'un tag qui serait lui-même un descendant d'un tag fils de la racine de l'abre XML issu du fichier 'file.xml' :eek:

Comme tu vois, avec XPath, il est en théorie possible de localiser des tags respectant des conditions très très précises et complexes, ce qui permet donc a XSL de pouvoir appliquer des transformations bien compliquées...




Pour ASP et PHP, je ne suis pas un pro du sujet, mais il m'a semblé comprendre que leur script étaient éxécuté sur le serveur.
Ce qui signifie qu'ils sont parmis les choses principalement responsable des ralentissement des serveurs web de nos jours.

Le Javascript est différent: chargé sur l'ordinateur du lecteur, il est ensuite éxécuté en local sous certaines restrictions de sécurité (ben oui, comme c'est un programme issu de net, l'ordinateur interdit toute manipulation pouvant être dommageable pour votre ordinateur), ce qui veut dire que la surcharge pour le serveur Web qui héberge ce script est quasi-nulle.

Vois la différence:
un script ASP lu 1000 fois = 1000 éxécutions sur le serveur et 1000 downloads
un script Javascript lu 1000 fois = 0 éxécution sur le serveur et 1000 downloads

Sachant que les script ne tiennent au max que sur quelques kilos, les downloads sont très légers... par contre, les éxécutions sont des opérations nécessitant appel à un gestionnaire d'interprétation du script (donc un logiciel très complexe) qui sont extrèmement lourdes...

Ce qui fait qu'en terme de travail pour le server Web qui t'héberges, la différence entre un ASP et un Javascript est dans la proportion de 1001 unités de travail à effectuer pour l'ASP conte une seule unité pour le JavaScript.

Voila pourquoi je dit que l'ASP (et le PHP) sont des solutions lourdes: certes pour le webmaster, c'est moins de boulot, mais ca polue les serveurs qui héberge ces webmasters fénéants. ;)

D'ailleurs, cela ce voit sur les serveur Web public: a puissance égale, le serveur qui ne prends pas en chagre l'ASP et le PHP ira toujours plus vite que celui qui les gère.


Ceci dit, fais moi quand même un copier-coller de ton XSL, ca m'inspirera peut-être une solution pour mon problème.

Par Scam le 28/4/2002 à 15:32:44 (#1362967)

La transformation client xsl/xml c est un beau reve mais pour l instant a moin d' etre pret a sacrifier une bonne partie des visiteurs de ton site t as pas le choix , faut le faire sur le serveur . Et si ta peur que sa allourdisse la charge serveur ben tu trouve un systeme de "cache maison" (genre variable d application (ou fichier html si les modifs sont moin frequentes) qui contient le resultat de la transformation xml/xsl que tu updates seulement quand le document xml change).
Xml xsl serveur c le pied , dire que ca pollue les serveurs et que ca sert aux webmasters feneants c un peu limite, il faut juste en faire un usage correct . si c est pour presenter les stats serveurs et que tu est si souciant des performances de ta page fait un applet java , ou flash , oui flash a un parseur xml , merdique(pas de xpath, lenteur affolante + nbre assez fous de bugs) mais y en a un et pour ce genre de realisation c parfait .

Par Moonheart le 28/4/2002 à 20:28:50 (#1365075)

Quand je parlais de webmasters fénéants, je ne parlais pas de XML/XSL, mais plutot de ASP/PHP

XML/XSL un peu requiert plus de taf, mais ca polue moins les serveurs... quand aux solutions indiquées pour "ne pas surcharger" le serveur, elles réduirotn sans doute la surcharge, elles ne peuvent cependant en aucun cas l'éliminer.

Je pense qu'il doit y avoir une solution propre quelque part, je regrette juste que personne ne semble la connaitre...

(PS: je suis toujours preneur de vos feuilles XSL... qui sait ca pourrait me donner de nouvelles idées...)

Par Scam le 28/4/2002 à 23:06:03 (#1366165)

j crois qu il y a un truc que tu n as pas compris ou alors ta reponse est mal formulee ,

"XML/XSL un peu requiert plus de taf, mais ca polue moins les serveurs... "

huh ? si tu fait ta transformation sur le serveur t as pas le choix , faut un moteur genre asp,jsp, ou php , ou cgi .Xml et xsl ne peuvent pas se "tranformer" tt seuls sur le serveur :).Le seul moyen de faire ca (xml+xsl only) c est sur le client avec un langage de script (js,vbs) et la tu perd tout ceux qui n utilisent pas ie (a peu de chose pres) .Les instruction en js que tu utilises cote client sont a 80% pareil a ce que tu ecriras sur ta page asp pour creer ta page html a partir de xsl/xml .

Et j peux te garantir que le cocktail xml/xsl +asp/php/jsp cote serveur est tres largement utilisé par les pros et pour des sites de gros gabaris ...

Enfin bonne chance :) ...

Par Mael Thagg le 28/4/2002 à 23:40:47 (#1366422)

Alors d'abord le fichier ASP fourni gracieusement par Algaeenor ;)





Et le fichier XSL appelé par l'ASP










Serveurs


































Français











conn.







conn.












Anglais











conn.







conn.













Allemands











conn.







conn.




































Au passage, un trés bon éditeur XSL : http://www.xmlcooktop.com/

Vala vala :)

Par Moonheart le 29/4/2002 à 0:15:23 (#1366634)

Justement je ne veux PAS que la transformation se fasse coté Serveur !!!!!


Quand a XML/XSL, ce sont les browsers coté client qui s'occupent de leur transformation si les a bien fait comme il convient.

Normalement, un browser dernière génération applique de la feuille xsl qu'il trouve dans en href dans le tag automatiquement, il n'y a pas besoin de code ASP/PHP/Javascript pour ca!!!!

Ce qui me fait chier, c'est que IE6 n'a pas implémenté complétement le X-Path sur lequel le language XSL repose. Du coup, la feuille XSL est incapable d'aller chercher les données d'un document XML autre que celle qui l'a appellé parce que la méthode document(url) est absente... :(


Normalement, si Microsoft n'avait pas foutu sa merde comme d'hab, ASP/PHP/Javascript seraient TOTALEMENT inutile avec un browser comme IE6.

Mais il faut bien comprendre que l'un des buts d'XML/XSL c'est de permettre une élimination TOTALE des merdes ASP/PHP qui saturent les serveurs web en permettant -théoriquement pour l'instant- une extraction et un formatage local des données de sources hétérogènes.


Il ne faut pas oublier que c'est le W3C qui a mis au point ces deux langages, et quand on sait que cet organise se dévoue depuis des années à chercher des solutions pour rendre le web plus homogène, plus fluide... etc... par des solutions software, il n'est pas étonnant qu'ils cherchent à "éliminer" l'ASP et le PHP autant que possible.

Bien sur, ces solutions sont encore très employées par les pros afin de permettre aux anciens browsers de faire tourner ce genre de page applicative. Mais nous parlons ici de contexte publique... i.e. le serveur ne m'appartient pas et il y a près de 2000 autres usagers qui en patissent si je met en route un ASP.


D'ou l'application d'un des principes fondamentaux de l'informatique: "A contexte différent, solution adaptée"

Le site de ma guilde est du domaine du futile, et je ne fais pas partie des gens qui font passer leurs loisirs avant les besoin fondamentaux des autres. (et oui, il y a plein de petites sociétés qui trainent sur les pages perso de wanadoo, faut penser à elle aussi... le taf c'est plus important que les jeux videos quand meme! -sauf si on travaille dans les jeux vidéos, bien sur)


(PS: Et oui, moi aussi je peu parler du sujet.... ;) J'ai bossé sur le XML coté pro comme beaucoup... J'avais juste très peu utilisé le XSL, du coup je ne trouve peut-être pas la solution qui devrait me sauter aux yeux si j'y avais plus d'xp... )

Par Mael Thagg le 29/4/2002 à 8:11:01 (#1367866)

Heu, supprimer ASP/PHP, etc... Ok je veux bien délester le serveur mais quid du traitement des BDD ?

M'est avis que ces langages côté serveur sont là encore pour un moment ;)

En tous cas si tu trouve une solution pour le cas qui nous intéresse publie-là ! :)

Par Mando le 29/4/2002 à 8:20:28 (#1367883)

Nous sommes à la recherche d'une bonne âme pour nous aider à mettre sur le site camelot.jeuxonline une page d'infos RvR pour les serveurs euros, "à la" Camelot Herald.

Un système d'historique me plairait bien aussi, mais j'en vois mal l'interface, et encore moins l'intérêt :)


Si quelqu'un est intéressé à contribuer d'un point de vue technique, il est le bienvenu !

Nous sommes de grosses feignasses, et nous développons donc en PhP :D

Par Xantorys le 29/4/2002 à 10:00:51 (#1368199)

Mando je suis en train de faire une page php de ce genre, je te donnerais volontier le code php si cela t'interressse.

l'état des serveurs :
http://www.ombre-et-lumiere.net/daoc-servers.php

les forts et reliques :
http://www.ombre-et-lumiere.net/serversxml.php

C'est pas terrible pour le moment surtout pour la présentation, j'essaye surtout de faire fonctionner le tout comme je veux :D


Sinon y a Ilyana qui se débrouille bien elle arrive à intégrer ça sur une carte comme Camelot Herald.


Bye bye

Par Moonheart le 29/4/2002 à 10:29:32 (#1368334)

Mael, il semble que tu n'aie pas connaissance des possiblité de XQuery à se sujet!

XQuery (alias Quilt pour les gens un peu à la traine sur le sujet) est un langage qui peux virtuellement extraire toute donnée venant d'une source le supportant et pour lequel à été défini une DTD.

Sachant que par exemple Oracle à prévu de rendre (ou à déjà rendu? il faudrait que je me renseigne tiens) ses bases de données compatible avec cette norme, on peux se dire que les "beaux jours" de ASP/PHP sont au contraire bel et bien comptés.


Et de toutes facons, même sans cela, il est actuellement très faisable de mettre en place une architecture 3-tiers BD-script-browser ou le script entretiendrait des fichiers XML en provenance de la base de donnée (c'est d'ailleurs la solution technique employée par le Camelotherald et Camelot-europe pour nous fournir leurs fichiers XML)


Donc crois-moi quand je dis que ASP/PHP ne sont pas si solidement encrés dans la place à l'heure actuelle.
Reste néanmoins le problème des anciens browsers, il est vrai.


----------------------------------------------------------------------------------


Mando, pour le PHP je peux pas t'aider. Je suis un noob sur le sujet.
Par contre, je peux te faire une XSL générant du XTMHL avec feuille de style CSS.

Par Mando le 29/4/2002 à 16:29:29 (#1370065)

Provient du message de Xantorys :
Mando je suis en train de faire une page php de ce genre, je te donnerais volontier le code php si cela t'interressse.


Oui, cela m'intéresse beaucoup.


Sinon y a Ilyana qui se débrouille bien elle arrive à intégrer ça sur une carte comme Camelot Herald.


Un site, un mail pour voir ça ?


Merci d'avance !

Par Xantorys le 29/4/2002 à 17:54:17 (#1370523)

Réponse en PM

Par Scam le 29/4/2002 à 18:16:13 (#1370698)

dbl post desolé :)

Par Scam le 29/4/2002 à 18:18:39 (#1370713)

Moon, asp/php servent pas juste a extraire des donnees d une bdd ou d un doc xml et le but a long terme de xml c est pas de faire disparaitre les php like , mais plutot de fournir une separation ente presentation et données pour pouvoir les rendre dispo sur le max de plateformes differentes a partir de la meme source .

le jour ou un language X poura instancier des composants serveurs (ftp,generation d images, ldap) generer des cookies, sessions, manipuler le file system serveur et bien d autres fonctionalités.... on en reparlera

Si tu trouve le techno xml excellente ben j t'encourage a essayer un php like (qui sont ts vraiment easy a apprendre pour le total noob en programmation) et l interaction entres ces languages et xml vont te permettre de faire bcp + de choses ...

Par Moonheart le 29/4/2002 à 20:53:34 (#1371629)

Si le but de XML est bien celui que tu décris, ce n'est pas celui de XSL/X-Inclue/X-Query...

XSL est un générateur de présentation (en gros)
X-Inclue est un intégrateur de données
X-Query est un langage d'interrogation de source de données hétérogènes.

XML n'a pas pour but de remplacer les PHP-like, mais la suite qui l'entoure à bel et bien pour but de tenter de faire disparaitre ou du moins limiter les traitements coté serveurs. D'ou le danger pour PHP.

A l'heure actuelle si la "suite XML" (ce n'est pas une appellation officielle, mais elle est pas mal en vogue ces temps-ci) était pleinement intégrée dans les browsers, tout ce que tu me cites (i.e. instancier des composants serveurs, generer des cookies, des sessions, manipuler le file system serveur etc....) pourrait être fait coté client avec l'aide d'un peu de Javascript.

Et encore, c'est a vérifier si JavaScript ne peu pas déjà le faire tout seul... (mais la ca devient un peu compliqué, je pense ;) )

Par Scam le 29/4/2002 à 21:23:23 (#1371808)

tout ce que tu me cites (i.e. instancier des composants serveurs, generer des cookies, des sessions, manipuler le file system serveur etc....) pourrait être fait coté client avec l'aide d'un peu de Javascript. Et encore, c'est a vérifier si JavaScript ne peu pas déjà le faire tout seul... (mais la ca devient un peu compliqué, je pense ).


nonsense j t assure :) (a la limite les cookies et encore pas sur) .

qqd j disais "plateforme" ca voulait dire pda , phone , browser, etc ... j pensais pas a linux/win ou ie/ns, de plus, javascript = windows pour l instant c tout (a peu de choses pres).

XML n'a pas pour but de remplacer les PHP-like, mais la suite qui l'entoure à bel et bien pour but de tenter de faire disparaitre ou du moins limiter les traitements coté serveurs. D'ou le danger pour PHP.


Limiter les traitements oui , remplacer(faire disparaitre cette technologie) non. Regarde .Net , SunOne ils utilisent a fond xml (SOAP,rpc,etc...), mais pour le web il le font avec aspx ou jsp ,languages serveurs.... le tt client c est juste pas possible y a des limitations trop importantes.

Par Moonheart le 29/4/2002 à 22:36:13 (#1372243)

Arf, tu sous-estimes le travail de W3C je penses.

Et puis Javascript marche sur n'importe quel Browser de nouvelle génération... Les PDAs... Les Phones... sont des choses marginales qui ne comptent pas pour moi.

Les opérateurs tentent depuis deux an de lancer le créneau, et franchement, c'est VRAIMENT loin d'être concluant :)


Bon, enfin... on va jamais être d'accord, quoi. On verra bien à l'avenir de toutes facons (bien sur, c'est pas pour demain)

Alors recentrons sur le sujet: dans le cas qui nous occupe, XML/XSL devrait suffir à faire une page extrayant les données des serveurs de DAOC en limitant les traitements au coté client....

Problème: le moyen le plus évident ne marche pas, alors une solution alternative en XML/XSL/Javascript ? oui/non? :)

XML/XSL/Javascript

Par Ming le 30/4/2002 à 11:28:19 (#1373785)

Moon, voila ce que tu cherchais :
Met ca dans une page html :






// Load XML
var xml = new ActiveXObject("Microsoft.XMLDOM")
xml.async = false
xml.load("http://www.camelot-europe.com/herald/servers.xml")

// Load the XSL
var xsl = new ActiveXObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load("servers.xsl")

// Transform
document.write(xml.transformNode(xsl))







Bon courage !

Par Moonheart le 30/4/2002 à 12:25:04 (#1374082)

Ben justement, Ming, c'est la ligne:

xml.load("http://www.camelot-europe.com/herald/servers.xml")

qui foire.... :(

le XML en PHP, code à inclure

Par sylrom le 2/5/2002 à 11:12:59 (#1382846)

Voilà un bout de code en PHP qui marche très bien et donc vous pouvez voir le résultat sur http://www.cercledusilence.fr.st :
$ficxml=@fopen("http://www.camelot-europe.com/herald/servers.xml","r");
$ligne=fgets($ficxml,256);
$ligne=fgets($ficxml,256);
echo "\n";
while($ligne=fgets($ficxml,256)) {
if(substr(trim($ligne),0,7)=="<server"){
$pos1=strpos($ligne,"\",1)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$serveur=substr($ligne,$pos1,($pos2-$pos1)+1);
};
if($serveur=="Broceliande") {

switch(substr(trim($ligne),0,7)) {
case "<server":
$pos1=strpos($ligne,"\",1)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$serveur=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\",$pos2+2)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$type=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\",$pos2+2)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$maj=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "Serveur :$serveurLangue : $typeSituation au : $maj";
break;
case ",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$population=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "Nb joueurs : $population";
break;
case ",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$status=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "Statut : $status\n";
break;
case "<relic ":
$pos1=strpos($ligne,"\",1)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$relique=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\",$pos2+2)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$type=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\",$pos2+2)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$royaume=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "Relique :$reliqueType : $typeRoyaume : $royaume";
break;
case ":
$pos1=strpos($ligne,">",1)+1;
$pos2=strpos($ligne,"<",$pos1)-1;
$owner=substr($ligne,$pos1,($pos2-$pos1)+1);
$couleur="black";
if($owner!=$royaume) {
$couleur="red";
};
echo "appartient à $owner\n";
break;
case "<keep n":
$pos1=strpos($ligne,"\",1)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$fort=substr($ligne,$pos1,($pos2-$pos1)+1);
$pos1=strpos($ligne,"\",$pos2+2)+1;
$pos2=strpos($ligne,"\",$pos1)-1;
$royaume=substr($ligne,$pos1,($pos2-$pos1)+1);
echo "Fort :$fortRoyaume : $royaume";
break;
};
};

};
fclose($ficxml);
echo ";
Voilà, ça crée un tableau pour représenter un serveur. Il suffit de remplacer Broceliande par le nom de votre serveur et c'est fini.

a+

Sylromoth Moghsson
Ambassadeur du silence
Thane - Brocéliande, Midgard

Par Moonheart le 2/5/2002 à 12:00:17 (#1383111)

Arf, y'a que des solutions qui cadrent pas a ce que je cherches! :(

Par Scam le 2/5/2002 à 12:02:50 (#1383130)

si tu veut vraiment tt faire sur le client utilise flash , c est encore la meilleure solution(sans script serveur) pour faire un truc aussi leger.

Par Moonheart le 2/5/2002 à 17:58:35 (#1385384)

Je ferais peut-etre ca si j'ai pas le choix... :(

JOL Archives 1.0.1
@ JOL / JeuxOnLine