Les fichiers xml si dessus ont le même contenu XML à une exception prêt. Ils pointent sur des transformations XSLT différente.
Ces 9 transformations xslt permettent de présenter le contenu du fichier XML sur une page HTML.
En ouvrant les 9 fichiers xml avec "Internet explorer", le résultat HTML est calculé et apparaît à l'écran. Pourtant, en regardant la source de la page qui s'affiche, on voit le fichier XML d'origine.
Pour être plus portable, il est préférable d'avoir son propre moteur de transformation XSLT. Par exemple php myxml. L'utilisation d'"Internet explorer" comme moteur de transformation ne doit rester que ponctuel.
Application concrète de transformation XSLT
Le CVML est un langage qui définit la composition d'un curriculum vitae. (Curriculum Vitae Makeup Language).
Les règle de transformations de CVML vers HTML sont définies dans le fichier "cv-entreprise.xsl".
Mon curriculum vitae est définit dans le fichier "cv-pg-fr.xml".
Si on fabrique plusieurs curriculum vitae en respectant les règles définies par le CVML, il est possible de les voir sous un même format en utilisant la même transformation. De cette façon, tous les curriculum vitae ont le même format. Ils sont plus faciles à dépouiller.
De plus, il est possible de fabrique ça propre transformation. Ce qui permet de mettre en valeur les même paramètres de chaque curriculum vitae.
DTD pour XSLT (ou Document Type Definition pour eXtensible Style Language Tranformation)
Le texte suivant explique pourquoi il n'existe pas de définition formelle du langage XSLT. Cet article à été trouvé sur http://www.oasis-open.org/cover/xsl.html.
[July 19, 1999] DTD for XSLT? "[Anthony Finkelstein:] Are we missing something obvious, or is there really not a valid DTD for XSL(T) in general circulation? [James Tauber:] It is difficult to have a DTD for XSLT because it mixes multiple namespaces (one for the XSLT vocabulary and one for the output vocabulary). XSLT includes a partial DTD but you have to add the markup declarations necessary for the output vocabulary. The XSL formatting objects could have a DTD, but that is not what is included in the XSL spec. The DTD in the XSL spec is a guide for implementers saying (principally) which properties go where. It is an SGML DTD because SGML DTDs are more expressive. Remember that formatting objects aren't principally an XML vocabulary. They are nodes in a tree with properties and just happen to be easily serialised as XML. Ultimately, XSLT and XSL could have schemata in other, more expressive languages (like the schema language the W3C is currently working on) that allow for namespaces..." [XML-L, 17 Jul 1999]
Problème XSLT rencontré :
Différence de comportement entre les 9 transformations génériques et la transformation cvml.
Définition :
Transformation générique : "Indentation1-2.xsl", "Indentation2-2.xsl", et "xml.xsl"
La transformation générique ne fonctionne pas sur tous les navigateurs. Alors que la transformation cvml est plus portable. (Du mois je l'espère).
J'ai trouvé une raison possible qui fait que mon xslt générique ne se voit pas dans Firefox alors que le cvml est bien transformé.
Le fichier "Indentation1.xsl" appel le namespace : <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
Le fichier "cvml-entreprise.xsl" appel le namespace : <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
Ces deux namespace sont reconnus par Internet Explorer.
Firefox ne reconnaît que "http://www.w3.org/1999/XSL/Transform".
Pourquoi n'utiliserais-je pas la transformation qui est connu des deux ? Par ce que ces deux transformations ne fournissent pas les même fonctionnalités. Elles ne répondent pas exactement au même langage.
Je m'explique :
La transformation utilisée dans "Indentation1.xsl" connaît l'attribut match="cdata()"
Cet fonctionnalité est inconnue de la transformation utilisée par "cvml-entreprise.xsl".
Je ne suis dont pas en mesure de faire un traitement spécifique pour les <![CDATA[...]]> avec la transformation utilisée par "cvml-entreprise.xsl". Impossible dans ces conditions de produire une transformation générique.
Je lance un appel :Est-ce que quelqu'un peut me dire comment résoudre ces deux problèmes en utilisant la transformation connue de Firefox ?
Merci d'avance
Remarque : La transformation utilisée dans "Indentation1-2" est tout de même celle qui est reconnu de FireFox même si les <![CDATA[...]]> sont considérés comme du texte