06/11/2008

BOM dans l'entête

Certains éditeurs de texte rajoutent des caractères en début de fichier, avant la première balise ouvrante, lors d'opérations sur des fichiers de type xml, xsl, html.. Le BOM rajouté en début de fichier peut alors provoquer des erreurs lors de l'utilisation du fichier.

Ainsi, un fichier xsl dont le contenu a été reformaté par certains éditeurs, peut mettre le processeur xslt en erreur lors de la génération de la page html. Ce qui résulte par le non affichage de la page html, et le retour d'une erreur. Dans le cas présent il s'agit d'un processeur SAX pour JAVA:

[Fatal Error] :1:1: Content is not allowed in prolog.
jstl:WEB-INF/stylesheet/xsl/tiger/html/; Ligne #1; Colonne #1; org.xml.sax.SAXParseException: Content is not allowed in prolog.

Parmis les éditeurs qui ne rajoutent pas de BOM, on peut citer:

  • SPY XML Editor
  • PsPad

Avec PsPad, il est possible de reformater le contenu d'un fichier xsl (ou html). Ce qui a pour effet de mettre au propre l'indentation, les sauts de ligne, pour que le fichier soit plus lisible.' HTML > Reformater le code HTML ' (puis enregistrer les modifications) permet de lancer cette opération.

pspadHtmlFormat.png

 

Parmis les éditeurs qui rajoutent un BOM:

  • XML Copy Editor

Pour reformater le contenu d'un fichier xml avec XML Copy Editor: ' XML > Formater la source ' puis enregistrer les modifications. Attention, cette opération rajoute en début de fichier un BOM.

Pour repérer les éditeurs qui rajoutent un BOM en début de fichier, il faut réouvrir le fichier avec un éditeur hexadécimal (pspad par exemple), et constater s'il y a des caractères qui sont apparus avant la première balise ouvrante du fichier.

 

Auteur: Euan MATEO

23/10/2008

Debugger JavaScript sous Internet Explorer

Un pluggin permet de débugger le code Javascript sous ie. Je pensais que ça n'est faisaible que sous Firefox, mais non.

La preuve en téléchargeant l'installeur Windows ICI.

Pour l'activer dans le menu d'options du navigateur, il faut décocher (avec XP Service Pack 2):

Tools->Internet Options…->Advanced->Disable Script Debugging (Internet Explorer)
Tools->Internet Options…->Advanced->Disable Script Debugging (Other)

(Testé pour Windows XP Professionnel 2002 SP2)

Référence:

25/01/2008

XSLT templates pour le XML / DOM

Le XSLT est un langage qui permet de créer des feuilles de style, pour la mise en page d'informations DOM.

Un tuto français qui regroupe les principales fonctions xslt: ICI 

24/01/2008

DOM, qu'est ce que c'est ?

DOM est défini par Wikipedia : 'DOM permet de construire une arborescence de la structure d'un document et de ses éléments.'

Je trouve cette définition plutot pas mal.

L'aborescence est en quelque sorte l'arbre généalogique des éléments d'un document. On parlera d'ailleurs de noeuds parent et enfant. Cette arborescence commence au noeud racine.

 

Xpath

XPath permet de naviguer dans un document source XML, comme on peut le faire dans une arborescence de dossiers. Les instructions ont d'ailleurs une notation très similaire.

XPath voit le document XML comme une arborescence de noeuds, un peu comme un Document Object Model (DOM). Chaque élément du document source XML est représenté par un noeud XPath. Les noeuds peuvent contenir plusieurs types d'informations:

  • Le noeud racine contient tout le document
  • Un noeud texte contient du texte
  • Un noeud attribut contient un attribut du document source XML

Et, il existe d'autres types de noeuds. 

XPaht peut comporter des expressions 'relative' ou 'absolue'. Une expression XPath absolue commence par un slash '/', qui indique le noeud racine. Pour une expression absolue, on part toujours de la racine du document. Pour une expression relative, on part du noeud courant. Une expression relative ne commence pas par un slash '/'. Les expressions relatives sont très utiles pour indiquer les éléments à un processeur XSLT, depuis le noeud courant du processeur.

Le contexte permet de mémoriser l'état lorsque XPath parcourt le document. Parmis les informations contenues dans le contexte, il en est une qui a une grande importance: le noeud courant, soit le noeud où l'on se trouve lors du parcours du document XML.

On prend par exemple, l'arborescence suivante qui correspond à un 'répertoire téléphonique' imaginaire:

'.' : Représente le noeud courant

'/' : Représente la racine du document, soit le noeud 'répertoire'

'../' : Permet d'accéder au noeud parent 

'/personne' : Représente le noeud 'personne', enfant de 'répertoire' 

'/personne/nom' : Représente le noeud enfant 'nom'

La navigation a comme point de départ le noeud 'courant'. Si je me trouve sur le noeud personne, '.' désigne le noeud personne. '../' représente le noeud 'répertoire'.

Une autre instruction qui peut être utile, le double slash '//', qui signifie tous les noeuds. C'est cependant à utiliser avec quelques précautions. Si je note '//nom', j'obtiens tous les noeud 'nom' à partir de la racine,  soit les noeuds 'nom' enfants de 'répertoire' et les noeuds 'nom' enfants de 'personne'. Si rien n'est précisé avant le double slash, on part de la racine.

Un noeud attribut correspond à l'attribut d'une balise XML. Pour désigner un attribut avec XPath, on fait précéder le nom du noeud par arobase (@). ex: '/personne/@emploi' pour l'attribut de <personne emploi='développeur'>

 

Références:

  • XSLT 'Mastering XML transformations', écrit par Doug Tidwell, aux éditions O'Reilly
  • Développez en Ajax, écrit par Michel Plasse, aux éditions Eyrolles

Auteur: Euan MATEO

23/01/2008

XSLT et PHP5

Le XSLT est un langage qui permet principalement de transformer du XML en page HTML. En fait, il permet de créer des feuilles de style pour la mise en page d'informations contenues dans des fichiers XML. On peut parler de template, au même titre que Smarty par exemple.

Depuis PHP5, la transformation du XML / XSLT, est prise en charge par la librairie libxslt. Google n'est pas très locace sur le sujet d'ailleurs. J'ai tout de même trouvé un tuto bien fait sur le sujet, et en Français: ICI

 Le traitement repose sur la classe PHP XSLTProcessor.

Le déroulement d'une transformation est assez simple:

  1. Créer une nouvelle instance de la classe XSLTProcessor
    • $xslt = new XSLTProcessor();
  2. Créer une instance de document Dom, et charger le fichier XML
    • $xml = new DOMDocument();
    • $xml->load($fichier_XML);
  3. Créer une instance de document Dom, et charger la feuille de style XSL
    • $xsl = new DOMDocument();
    • $xsl->load($fichier_XSLT);
  4. Charger le document Dom du XSLT dans l'instance de XSLTProcessor
    • $xslt->ImportStyleSheet($xsl);
  5. Lancer la transformation et récupérer une chaine 
    • $chaine = $xslt->transformToXML($xml);

Le résultat de la transformation peut être récupéré sous 3 formats, avec les méthodes 'transformToDoc()' pour récupérer un DomDocument, 'transformtoURI' pour récupérer une ressource identifiée par un URI, ou encore 'transformToXML()' pour récupérer une chaine.

Auteur: Euan MATEO

18/01/2008

Tutos AJAX et Prototype

Pour se lancer dans l'AJAX rien de mieux que quelques tutos bien faits:

  • Celui là présente les grandes lignes, sans recours à un framework: ICI

Jusqu'à maintenant c'est prototype qui a ma préférence. Il existe là encore de bons tutos pour prendre en main la 'bête':

  •  Des notions bien utiles: ICI
  • Doc de référence en anglais qui présente presque toutes les fonctionnalités de prototype: ICI
  • Un tuto bien progressif en Français, un must : ICI


Protype est encore mieux pour faire de l'AJAX lorque l'on utilise du JSON pour transporter l'information sous forme d'objets:

  • La présentation par le site de prototype: ICI
  • Un tuto également bien fait en Français: ICI

Une curiosité qui peut même être utile, une map des fonctions prototype: ICI

Quel framework pour AJAX ?

Un article en anglais qui présente 4 des principales librairies JavaScript :  ICI

 Mais aussi, et toujours en anglais: ICI

 

Les principaux 'framework' pour faire de l'AJAX sont :