06.23.06
Récupérer les types d’un schéma XML
Les différents problèmes rencontrés la semaine dernière sont en partie résolus, principalement ceux relatif à l'utilisation de E4X.
J'ai réalisé un petit exemple (GetXMLSchemaTypes.txt, à renomer en .html) avec le standard E4X qui permet de lister les différents types présents dans un schéma XML. L'utilisateur doit introduire le nom du fichier xsd (qui se trouve dans le même dossier que le fichier html par exemple) dans une entrée texte et en appuyant sur un bouton, les différents complexType et simpleType sont affichés dans deux listes déroulantes.
J'ai cependant remarqué que le fichier chargé grâce à la méthode "open()" de l'objet XMLHttpRequest ne doit contenir aucune Processing Instructions en tête de fichier, sans quoi ça ne fonctionne pas. Le problème vient apparemment de la méthode "responseText()" qui se charge de transformer une instance en une représentation textuelle. Il y a certainement encore une subtilité qui m'échappe à ce sujet…
06.15.06
Problème avec l’extension “xhtml”
J'ai passé (perdu) énormément de temps à essayer de comprendre la raison pour laquelle un fichier avec une extension "xhtml" n'exécute pas les scripts présents dans la page. J'ai essayé avec un tout bête document.write("–Test–") mais le navigateur (Firefox) ne veut rien savoir et n'affiche donc rien à l'écran! Le simple fait de modifier l'extension en "html" résout le problème…ce n'est cependant pas une solution!.
Après de longues recherches sur le net, j'ai pu trouver quelques liens qui préconisaient d'insérer les tags //<![CDATA[ et //]]>autour des lignes de script. Ex.:
<script language="javascript" type="text/javascript">
//<![CDATA[
function test() {
document.write('---TEST---');
}
//]]>
</script>
Cependant, l'ajout de ceci n'a rien changé! Il s'agit donc d'un problème à résoudre…
Premiers pas avec E4X
E4X pour "ECMAScript for XML" est une extension à la version de base de ECMAScript et ajoute un support direct du XML. Il permet par exemple de manipuler très facilement des noeuds XML.
Il suffit d'utiliser un objet de la classe "XML" –> var monObj = new XML()
J'ai réalisé un petit exemple (fichier E4XTest.txt, qu'il faut renommer en .html) qui permet de voir les quelques possibilités qu'offre cette nouvelle norme. Il y a encore beaucoup à explore mais on se rend vite compte de la simplicité offerte!
J'ai cependant quelques problèmes pour charger le contenu d'un fichier XML externe. Le fichier exemple contient en dur une instance XML, ce qui n'est pas exploitable ni réaliste. La classe "XML" offre normalement une méthode "load(<fichier>)" permettant de charger dans un objet le contenu d'un fichier externe (dont le nom est passé en paramètre). Cette instruction a été mise pour l'instant en commentaire dans le code source de la page exemple. Le fichier commande.xml est également à disposition.
Je ne sais pas encore d'où vient le problème.