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/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