|
|
|
|
||||||
![]() |
|
|
LinkBack | Outils de la discussion |
|
|
#1 |
|
Messages: n/a
Hébergeur: |
j'essai de faire une transfo xml -> (x)html de deux manières différentes : - classic par DOM (appendChild und so weiter...) - moins classic par XSLT les versions d'essais sont respectivement aux pages : <http://thoraval.yvon.free.fr/AB2Html_sam/index.xhtml> "DOM" <http://thoraval.yvon.free.fr/AB2Html_sam/index_xslt.xhtml> "XSLT" la version "DOM" donne le même résultat sur Safari et sur Firefox. par contre si la version "XSLT" donne le même résultat que la version "DOM" sur Safari, il n'en va pas de même sur Firefox : - l'image n'apparaît pas => tout se passe "comme si" la src de l'image n'était pas chargée - le résultat n'est pas conforme à la feuille de styles css... quelqu'un a une idée sur ce genre de pb ??? j'avoue nettement préférer la verion "XSLT" (plus lisible et plus maintenanble) au tripatouillage de "DOM"... -- Une Bévue |
|
|
|
#2 |
|
Messages: n/a
Hébergeur: |
Une Bévue a écrit :
> j'essai de faire une transfo xml -> (x)html de deux manières différentes > : > > - classic par DOM (appendChild und so weiter...) > - moins classic par XSLT > > les versions d'essais sont respectivement aux pages : > > <http://thoraval.yvon.free.fr/AB2Html_sam/index.xhtml> "DOM" > <http://thoraval.yvon.free.fr/AB2Html_sam/index_xslt.xhtml> "XSLT" > > la version "DOM" donne le même résultat sur Safari et sur Firefox. > > par contre si la version "XSLT" donne le même résultat que la version > "DOM" sur Safari, il n'en va pas de même sur Firefox : > - l'image n'apparaît pas => tout se passe "comme si" la src de l'image > n'était pas chargée > - le résultat n'est pas conforme à la feuille de styles css... > > quelqu'un a une idée sur ce genre de pb ??? Ou bien tu as bidouillé depuis ou bien, à équipement presque équivalent, nous avons qques dissemblances : iMac-intel - Système 10.4.10 Firefox 2.0.0.12 : - exactement pareil à l'écran pour les 2 tests - menu de gauche 'group' pareil itou sur les 2 tests - 'people' et 'person' sont vides - Ha! ? fallait clicoter ! ? - dans le test 2 xslt : l'image non vue ... en effet y a pas la trombine dans la 'person' et non plus que zip et ville et remarque à côté photo Safari 2 : - pareil pour les 2 tests - présentation idem Fx (avec ttes les images figurant le Carnet) - pas de menu à gauche :-( et pas de web kit non plus ... que du "normal" de base. Fx : Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.12) Gecko/20080201 Firefox/2.0.0.12 Safari : Version 2.0.4 (419.3) -------------------------------------------------- fichier 'control_xslt.js' : ici où 'xml' est le responseXML : function buildGroupList() { grps_elt = xml.getElementsByTagName( "GRPS" )[ 0 ]; J'aurais imaginé qu'il eût fallu faire : var D = document.createElement('div'); D.innerHTML = xml; // ou D.innerText = xml; ? et seulement alors extraire la balise grps_elt = D.getElementsByTagName( "GRPS" )[ 0 ]; ------ d'où sortent : - XSLTProcessor - transformToFragment Ha !? ce sont des trucs spécifiques à Mozilla Faut donc peut-être voir à voir de ce côté pour l'image ? Attention ! Pour info : Dans mes notes j'utilise aussi des caractères non alpha-numériques --------------------------------------------------- fichier 'control.js' : Même remarque que ci-avant concernant la recherche de balises dans ce que je croyais être un string. Erreur : ======== addr has no properties http://thoraval.yvon.free.fr/AB2Html_sam/control.js Line 92 Là : loc = addr.getElementsByTagName("LOCALITY")[0].firstChild.nodeValue; zip = addr.getElementsByTagName( "PCODE" )[ 0].firstChild.nodeValue; comme sans doute le reste avant (nom, prenom, entreprise, tel 1, tél 2, et autres téls, e-mail, personne amie ou assistant, re-tel etc ...) prévoir que ça peut exister et surtout la condition pour l'utiliser ou non : function extr(what) { if (addr && addr.getElementsByTagName(what) && addr.getElementsByTagName(what)[0] && addr.getElementsByTagName(what)[0].firstChild.nodeValue && addr.getElementsByTagName(what)[0].firstChild.nodeValue !='') return addr.getElementsByTagName(what)[0].firstChild.nodeValue; else return false; } var loc = extr("LOCALITY"); var zip = extr("PCODE"); if(loc || zip) { loc = loc? loc : ''; zip = zip? zip : ''; dd.appendChild( document.createTextNode( zip + " " + loc ) ); } -- sm |
|
|
|
#3 |
|
Messages: n/a
Hébergeur: |
SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote:
> > Ou bien tu as bidouillé depuis ou bien, à équipement presque équivalent, > nous avons qques dissemblances : > > iMac-intel - Système 10.4.10 iMac PPC 10.4.11 Firefox 3.0b4 Safari 3.1 (4525.13) firefox - dom : <http://cjoint.com/data/duo23PXEAm.htm> firefox - xslt : <http://cjoint.com/data/duo5A0gikR.htm> safari - dom : <http://cjoint.com/data/dupgCxh7rl.htm> safari - xslt : <http://cjoint.com/?durHJMq1j1> > > Firefox 2.0.0.12 : > - exactement pareil à l'écran pour les 2 tests > - menu de gauche 'group' pareil itou sur les 2 tests > - 'people' et 'person' sont vides oui, "group" et "people" se font de la même manière en dom et en xslt, seule "person" change entre les deux versions... > - Ha! ? fallait clicoter ! ? > - dans le test 2 xslt : > l'image non vue ... en effet y a pas la trombine dans la 'person' > et non plus que zip et ville > et remarque à côté photo > > Safari 2 : > - pareil pour les 2 tests > - présentation idem Fx (avec ttes les images figurant le Carnet) > - pas de menu à gauche :-( > et pas de web kit non plus ... que du "normal" de base. qu'est-ce que tu appelles le "web kit" ? une version de safari ? > > Fx : > Mozilla/5.0 (Macintosh; U; Intel Mac OS X; fr; rv:1.8.1.12) > Gecko/20080201 Firefox/2.0.0.12 > > Safari : > Version 2.0.4 (419.3) > > -------------------------------------------------- > > fichier 'control_xslt.js' : > > ici où 'xml' est le responseXML : > > function buildGroupList() { > grps_elt = xml.getElementsByTagName( "GRPS" )[ 0 ]; > > J'aurais imaginé qu'il eût fallu faire : > > var D = document.createElement('div'); > D.innerHTML = xml; // ou D.innerText = xml; ? > > et seulement alors extraire la balise > > grps_elt = D.getElementsByTagName( "GRPS" )[ 0 ]; non, non, ce que je fais est corect... > ------ > d'où sortent : > - XSLTProcessor > - transformToFragment > Ha !? ce sont des trucs spécifiques à Mozilla non c'est du dom-xslt marche sur safari/firefox au - > > Faut donc peut-être voir à voir de ce côté pour l'image ? > > Attention ! > Pour info : > Dans mes notes j'utilise aussi des caractères non alpha-numériques > > --------------------------------------------------- > > fichier 'control.js' : > > Même remarque que ci-avant concernant la recherche de balises dans ce > que je croyais être un string. > > Erreur : > ======== > addr has no properties > http://thoraval.yvon.free.fr/AB2Html_sam/control.js > Line 92 > > Là : > loc = addr.getElementsByTagName("LOCALITY")[0].firstChild.nodeValue; > zip = addr.getElementsByTagName( "PCODE" )[ 0].firstChild.nodeValue; > > comme sans doute le reste avant (nom, prenom, entreprise, tel 1, tél 2, > et autres téls, e-mail, personne amie ou assistant, re-tel etc ...) > prévoir que ça peut exister oui, bien sûr ;-) > et surtout la condition pour l'utiliser ou non : > > function extr(what) { > if (addr && > addr.getElementsByTagName(what) && > addr.getElementsByTagName(what)[0] && > addr.getElementsByTagName(what)[0].firstChild.nodeValue && > addr.getElementsByTagName(what)[0].firstChild.nodeValue !='') > return addr.getElementsByTagName(what)[0].firstChild.nodeValue; > else return false; > } > > var loc = extr("LOCALITY"); > var zip = extr("PCODE"); > if(loc || zip) { > loc = loc? loc : ''; > zip = zip? zip : ''; > dd.appendChild( document.createTextNode( zip + " " + loc ) ); > } > oui, je suis d'acord, pour la version "DOM" il faudrait que j'améliore les tests... MAIS, en ce qui concerne la div de droite "person", je préfère utiliser xslt, c'est plus élégant comme solution, plus facile à lire et à maintenir, c'est aussi beaucoup plus souple en écriture que la soupe de DOM avec ses appendChild and Co... malgré ce pb, je regarde, cette aprem's le search sur le différents champs... -- Une Bévue |
|
|
|
#4 |
|
Messages: n/a
Hébergeur: |
SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote:
> Ou bien tu as bidouillé depuis ou bien bon ça roule maintenant chez moi (pas encore online) j'avais oublié un namespace dans preview.xsl dont les premières lignes deviennent : <?xml version="1.0" encoding="ISO-8859-1"?> <xsl:stylesheet version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> le reste identique... j'ai commencé le search, OK sur name, je me renseigne sur les hashes en js pour balayer les autres tags... -- Une Bévue |
|
|
|
#5 |
|
Messages: n/a
Hébergeur: |
Une Bévue a écrit :
> > j'ai commencé le search, OK sur name, je me renseigne sur les hashes en > js pour balayer les autres tags... Pourquoi sur 'name' ? yaka chercher dans chaque vCard (sauf groupes) (Address Book ne cherche pas que dans les noms) function cherche(myStr) { var ul = document.createElement( "ul" ); var affiche = function( fn ) { var name = fn.firstChild.nodeValue; var li = document.createElement( "li" ); li.appendChild( document.createTextNode( name ) ); li.setAttribute( "onclick", "buildAddressCard('"+name+"')" ); ul.appendChild( li ); } var tout = req.responseXML.getElementsByTagName( "vCard" ); var result = []; for(var i=0,lg=tout.length; i<lg; i++) if(tout[i].innerHTML.indexOf(myStrg)>=0) affiche( tout[i].getElementsByTagName('FN')[0] ); peopleDiv.innerHTML = ""; peopleDiv.appendChild( ul ); } -- sm |
|
|
|
#6 |
|
Messages: n/a
Hébergeur: |
SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote:
> > Pourquoi sur 'name' ? heuh, c'était juste pour un petit essai, histoire de commencer... > yaka chercher dans chaque vCard (sauf groupes) > (Address Book ne cherche pas que dans les noms) > > function cherche(myStr) { > var ul = document.createElement( "ul" ); > var affiche = function( fn ) { > var name = fn.firstChild.nodeValue; > var li = document.createElement( "li" ); > li.appendChild( document.createTextNode( name ) ); > li.setAttribute( "onclick", "buildAddressCard('"+name+"')" ); > ul.appendChild( li ); > } > var tout = req.responseXML.getElementsByTagName( "vCard" ); > var result = []; > for(var i=0,lg=tout.length; i<lg; i++) > if(tout[i].innerHTML.indexOf(myStrg)>=0) > affiche( tout[i].getElementsByTagName('FN')[0] ); > peopleDiv.innerHTML = ""; > peopleDiv.appendChild( ul ); > } j'ai pas fait comme ça, confère mon essai online : <http://thoraval.yvon.free.fr/AB2Html_sam/index_search.xhtml> on peut donc chercher soit : - Tout => tous les champs de la vCard - Name => champ du nom - Adresse => champs de/des l'adresse(s) (STREET, PCODE, LOCALITY) - Téléphone => champ du/des TEL(s) (NUMBER) - Courriel => champ du/des EMAIL(s) (USERID) - Internet => champ du/des URL - Messagerie => champ du/des IM (ID | NICKNAME) - Note => champ de la NOTE bon, tjs, pour commencer j'ai fait ça par "val.indexOf( txt ) > - 1" mais je peaufinerai par une regex de manière à être insensible à la casse... Ah l'événement (dans mon 'input type="text"'...) qui provoque le démarrage de la recherche est 'onblur', il y a peut-être plus judicieux ??? -- Une Bévue |
|
|
|
#7 |
|
Messages: n/a
Hébergeur: |
Une Bévue a écrit :
> SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote: > >> Pourquoi sur 'name' ? > > heuh, c'était juste pour un petit essai, histoire de commencer... réponse en BAL (free) -- sm |
|
|
|
#8 |
|
Messages: n/a
Hébergeur: |
SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote:
> > réponse en BAL (free) yvon(dot)thoraval(at)gmail(dot)com je n'utilise + free. mais c(est vrai que notre discussion est "privée"... -- Une Bévue |
|
|
|
#9 |
|
Messages: n/a
Hébergeur: |
Une Bévue a écrit :
> SAM <stephanemoriaux.NoAdmin@wanadoo.fr.invalid> wrote: > >> réponse en BAL (free) > > je n'utilise + free. Merdum ! j'aurais dû doubler! c'est forwardé. |
|
![]() |
| Outils de la discussion | |
|
|