|
|||||||||
DXML
: Création de menus Html dynamiques en XML insérés dans une page HTML |
|||||||||
George
Young L'exemple le fichier menus.js le fichier menus.css le fichier menus.xsl le fichier menus.xml Insérer la barre de menu Charger les documents Exemple complet |
Depuis la version 4.0 d'Internet Explorer, le navigateur prend en charge la
norme XML, soutenue par tous les acteurs du W3C http://www.w3.org/ Si HTML et HTTP ont révolutionné la communication de l'information, XML est en passe de devenir le langage du 3e millénaire le plus utilisé au sein d'une page web et bon nombres de documents utilisés tous les jours (MS Word, MS Excel,...). XML n'est pas le remplaçant du HTML mais plutôt une (r)évolution de celui-ci... Si vous désirez plus d'information sur XML, parce
que cette page ne traitera pas du langage, vous pouvez vous rendre sur le site du W3C dont
l'adresse figure plus haut ou bien chez Microsoft, le principal acteur: |
||||||||
Bibliographie : XML en action par William J. Pardi Edition Microsoft Press ISBN 2-84082-568-6 / 199 FFR |
|||||||||
Cet
exemple est une application de l'article paru chez Microsoft, à l'adresse citée plus
loin, dans ce paragraphe. Nous allons fabriquer un menu comme la barre de menu de cette page sauf que et ,c'est là tout l'intérêt, vous aurez également les sous-menu. Dans un premier temps, vous devriez récupérer l'exemple en français (c'est un bon début). Car c'est à l'aide de l'article français (adresse ci-après) et de son équivalent américain réservé à XML que l'exemple est traité. http://www.microsoft.com/FRANCE/msdn/technologies/scripting/info/corner052499.html * Sur quels sites utiliser XML ? Il suffit de demander à vos
fournisseurs d'accès si Internet explorer 4.0 ou ultérieur ( 5.0 ce serait bien) ou
alors les Parsers d'XML. Sans cela, il faudra bidouiller le HTML, comme les menus de mon
site, où vous lancer dans Java. |
Pour en savoir plus sur XML, vous pouvez vous rendre également sur le site
MSDN américain aux pages de George Young. George Young dirige le développement des sites Microsoft Windows, et a participé auparavant au développement des sites MSDN Online et Site Builder Network. Durant ses loisirs, il écoute la radio mexicaine avec Windows Media Player, et se déplace régulièrement entre Redmond (État de Washington) et la Nouvelle-Orléans. |
||||||||
Si vous désirez seulement récupérer le fichier nécessaire corner9905.zip, cliquez sur ce lien. | |||||||||
Pour créer le squelette de votre menu XML, vous pouvez télécharger XMLNotepad (produit Microsoft version 1.0 bêta) qui est nettement plus convivial que Notepad. Avant toute chose, vérifier s'il existe une version plus récente du produit. | |||||||||
Vous allez
commencer par créer un premier fichier (sauvegardé menus.js) qui contiendra les scripts d'ouverture et de fermeture des menus : /* MENUS.JS */ vous allez créer un autre fichier (menus.css). Ce sont les informations contenues qui donneront l'aspect au menu que vous êtes en train de créer (couleurs, propriétés de polices, etc). /* MENUS.CSS */ Ensuite vous allez créer, votre page HTML (mapage.html) en déclarant les 2 fichiers précédemment créés. Si vous devez les placer dans un répertoire différent, n'oubliez pas de le modifier. Ex : _private/menus.css <html> <meta name="description" content="Ma page pleine de menus"> <meta name="keywords" content="XML"> <title>Ma page avec un chouet menu</title> <link HREF="menus.css" REL="STYLESHEET" TYPE="text/css"> </head> <script LANGUAGE="JavaScript" SRC="menus.js"> </script> Ensuite, il faudra placer
ce menu sur cette page html où vous voulez entre 2 balises DIV. La barre de menu sera
insérée à l'endroit où se trouve le code suivant. < body><div id="dataContainer"></div> </body> Ne faites pas : Mais vous pouvez faire : Ce code <div id="dataContainer"></div> hors d'une cellule d'un tableau. Cela peut fonctionner d'une autre manière mais je n'ai pas cherché. Cette solution est à mon avis la plus simple. Création du "squelette" HTML (menus.xsl) à partir d'une feuille de style XSL. Ce fichier va servir à formater les informations contenues dans le document |
|||||||||
<?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <!-- MENUS.XSL --> <xsl:template match="/"> <HTML> <HEAD> <TITLE><xsl:value-of select="TOPICLIST/@TYPE" /></TITLE> <LINK REL="stylesheet" TYPE="text/css" HREF="menus.css" /> <SCRIPT LANGUAGE="JScript" SRC="menus.js"></SCRIPT> </HEAD> <BODY> <xsl:value-of select="TOPICLIST/@TYPE" /> <!-- BUILD MENUBAR --> <DIV ID="divMenuBar"> <TABLE ID="tblMenuBar" BORDER="0"> <TR> <xsl:for-each select="//TOPICS[TOPIC]"> <TD CLASS="clsMenuBarItem"> <xsl:attribute name="ID">tdMenuBarItem<xsl:value-of select="@TYPE" /></xsl:attribute> <xsl:value-of select="@TYPE" /> </TD> <xsl:if test="context()[not(end())]"> <TD>|</TD> </xsl:if> </xsl:for-each> </TR> </TABLE> </DIV> <!-- BUILD INDIVIDUAL MENUS --> <xsl:for-each select="//TOPICS[TOPIC]"> <DIV CLASS="clsMenu"> <xsl:attribute name="ID">divMenu<xsl:value-of select="@TYPE" /></xsl:attribute> <DIV CLASS="clsMenuSpacer"></DIV> <xsl:for-each select="TOPIC"> <DIV> <A TARGET="_top"> /* PLACEZ ICI L'ADRESSE DE BASE DE VOTRE SITE */ <xsl:attribute name="HREF">http://patrice.bonnefoy.free.fr<xsl:value-of select="URL" /></xsl:attribute> <xsl:value-of select="TITLE" /> </A> </DIV> </xsl:for-each> </DIV> </xsl:for-each> </BODY> </HTML> </xsl:template> </xsl:stylesheet>
|
|||||||||
Création de la "table
des matières" (menus.xml) en langage XML télécharger XMLNotepad (produit Microsoft version 1.0 bêta. Vérifiez sur le site américain s'il n'existe pas une version plus récente). |
|||||||||
<?xml version="1.0"?> <?xml:stylesheet type="text/xsl" href="menus.xsl"?> <XML ID="XMLID"> <TOPICLIST> <TOPICS TYPE="Windows NT"> <TOPIC> <TITLE>Tour d'horizon</TITLE> <URL>/w2k/win2000.htm</URL> </TOPIC> </TOPICS> <TOPICS TYPE="Office
2000"> <TOPICS TYPE="Randonnée"> <TOPICS TYPE="Aide"> |
|||||||||
Et maintenant, on charge
les documents à l'aide du processeur XML : </head> |
|||||||||
L'exemple complet de la page HTML, cela donne : | |||||||||
<html> <head> <meta name="author" content="Moi"> <meta name="description" content="Ma page pleine de menus> <meta name="keywords" content="XML"> <title>Ma page avec un chouet menu</title> <link HREF="menus.css" REL="STYLESHEET" TYPE="text/css"></link> <script LANGUAGE="JavaScript" SRC="menus.js"> </script> <script LANGUAGE="JavaScript"> function SeeYouSoon() { alert ('Les menus DXML Microsoft de George Young.') } </script> </head> <script LANGUAGE="JavaScript" for="window" event="onload"> var source = new ActiveXObject("Microsoft.xmldom"); source.load("menus.xml"); var style = new ActiveXObject("Microsoft.xmldom"); style.load("menus.xsl"); document.all.item("dataContainer").innerHTML = source.transformNode(style.documentElement); </script> <body bgcolor="#FFFFFF" onUnload="SeeYouSoon()" /> <div id="dataContainer"></div> </body> </html> |
![]() |
||||||||