[Publication] Afficher un swf dans un doc XML
Écrit par Thibault Imbert | 03-02-2002

Afficher une animation SWF dans un document XML grâce au XSL.

Télécharger un exemple

 xsl_flash.zip xsl_flash.zip (5.59 KB)

Objectif

Depuis sa version 5.5, Internet Explorer pour Windows est capable de formater un document XML à partir d'une feuille de styles XSL.
L'objectif de ce tutorial est de proposer une alternative xml / xsl pour l'affichage du code html suivant.

<object>
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/
cabs/flash/swflash.cab#version=5,0,0,0" width="200" height="200">
<param name=movie value="fichier.swf">
</object>

Le fichier XML

Le fichier XML est constitué de 2 parties : l'entête et le corps.
L'entête du fichier XML commence par la déclaration du fichier. Le second élément d'entête est la déclaration de la feuille de style XSL à associer au fichier XML. Sans fichier XSL, pas d'affichage du document XML ! Le fichier XSL est étudié dans la partie suivante.

<?xml version="1.0"?>
<?xml-stylesheet href="mon_fichier.xsl" type="text/xsl"?>

Ce qui suit constitue le corps du document XML. La balise racine est la balise object, c'est le conteneur des balises suivantes :

  • codebase : url de téléchargement de l'ActiveX.
  • classid : numéro identifiant de l'objet pour windows.
  • width et height : les valeurs de largeur et de hauteur.
  • param : conteneur des balises name et value.
    <param> est elle-même un conteneur pour les balises name et value. On verra dans le fichier XSL associé que l'on peut placer autant de balises param que nécessaire, ceci grace à une boucle XSL.

<object>
<codebase>url de téléchargement de l'activeX</codebase>
<classid>clsid</classid>
<width>largeur</width>
<height>hauteur</height>
<param>
<name>nom</name>
<value>valeur</value>
</param>
</object>

Le fichier XSL

Le fichier XSL est composé de 3 parties : déclarations, styles à appliquer au document (la page web) et styles particuliers à appliquer aux balises du document XML.

La déclaration du document XSL : Dans le cadre d'un document XML, on ouvre une feuille de style XSL. Les deux dernières lignes définissent la façon dont sont interprétés les instances et les noeuds du document XML.

<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template><xsl:apply-templates/></xsl:template>
<xsl:template match="textnode()"><xsl:value-of/></xsl:template>

Les styles à appliquer au document : Ce qui suit indique quelles sont les transformations HTML que le navigateur doit appliquer à l'ensemble du document, le document étant l'instance " / " .
L'instruction <xsl:apply-templates /> précise l'endroit où doivent commencer les styles particuliers à appliquer aux instances définies dans le document XML.

<!-- pour chaque instance de document ... -->
<xsl:template match="/">
<html>
<head>
<title>Titre document</title>
</head>
<body bgcolor="orange">
<table width="100%" height="100%">
<tr>
<td align="center">
<!-- ... on appliquera ici des styles
à chaque instance xml -->
<xsl:apply-templates />
</td>
</tr>
</table>
</body>
</html>
</xsl:template>

Les styles particuliers : Ce qui suit indique quelles sont les transformations HTML que le navigateur doit appliquer aux instances XML, la balise racine de notre exemple xml étant la balise <object>.

<!-- Pour chaque instance <object> ... -->
<xsl:template match="object">
<!-- ... on écrit la balise HTML object -->
<object>
<!-- On affecte à <object> les attributs -->
<!-- classid, codebase, width et height -->
<xsl:attribute name="classid">
<xsl:value-of select="classid"/>
</xsl:attribute>
<xsl:attribute name="codebase">
<xsl:value-of select="codebase"/>
</xsl:attribute>
<xsl:attribute name="width">
<xsl:value-of select="width"/>
</xsl:attribute>
<xsl:attribute name="height">
<xsl:value-of select="height"/>
</xsl:attribute>
<!-- On effectue une boucle -->
<!-- pour chaque instance param -->

<xsl:for-each select="param">
<!-- La première instruction dans la boucle -->
<!-- est d'écrire la balise HTML param -->

<param>
<!-- les instructions suivantes écrivent -->
<!-- les attributs name="" value="" dans param -->

<xsl:attribute name="name">
<xsl:value-of select="name"/>
</xsl:attribute>
<xsl:attribute name="value">
<xsl:value-of select="value"/>
</xsl:attribute>
</param>
<!-- fin de la boucle param -->
</xsl:for-each>

Fin du document XSL. On ferme la balise racine du document XML, puis les styles XSL particuliers, enfin la feuille de style XSL.

</object>
</xsl:template>
</xsl:stylesheet>

Rediriger le navigateur vers la page XML / XSL

Vous pouvez employer l'un ou l'autre de ces scripts pour rediriger le navigateur vers votre page XML.

en Javascript :

<script language="javascript">
/* appel de la fonction : redirect_if_xsl (navigator.userAgent) ; */
function redirect_if_xsl (browser){
if (browser.indexOf("MSIE 6") > 0 || browser.indexOf("MSIE 5.5") > 0 && browser.indexOf("Win") > 0){
location = "mapage.xml"
}
}</script>

en PHP :

<?
/* appel de la fonction : redirect_if_xsl ($HTTP_USER_AGENT) ; */
function redirect_if_xsl ($browser){
if (stristr($browser, "MSIE 5.5") || stristr($browser, "MSIE 6") && stristr($browser, "Win")){
header("location: mapage.xml");
}
}?>

Cet e-mail est protégé contre les robots collecteurs de mails, votre navigateur doit accepter le Javascript pour le voir

flashwars !! starwars game

 
Dernière mise à jour : 12-09-2006