[Théorie] Ce que je fais :
- Génération automatique d'un fichier XML, grâce à du JAVA (en s'en fout !).
- Mise en forme via QUATRE fichiers :
- "global.css" : contient la mise en forme commune à tous les modèles d'affichages
- "modele_1.css" : spécifique au modèle n°1 ... c'est bien vous suivez !
Là ça devient important de bien suivre !
- "global.xsl" : doit contenir l'interprétation et la mise en forme des médias contenus dans mon XML. Mais, je pense que ma manière d'éviter ce copier/coller (voir code), n'est pas syntaxiquement correcte ? (Je connais les types de médias à afficher.)
- "modele_1.xsl" : spécifique au modèle n°1 ... en fait il ne contient pas grand chose !
[Pratique] Comment je le fais :
Mon fichier XML :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<?xml-stylesheet type="text/xsl" href="modele_1.xsl" ?> <!-- Le XSLT changera en fonction du modèle choisi -->
<root xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="ecran.xsd">
<ecran>
</ecran>
<modele>
<nom />
<titre />
<description />
</modele>
<zones>
<zone type="statique" chemin="file:////le_serveur/commun/toGom/mon_appli/_media/flash/snailrunner1.swf" />
<zone type="statique" chemin="file:////le_serveur/commun/toGom/mon_appli/_media/images/gom.jpg" />
<zone type="dynamique" chemin="file:////le_serveur/commun/toGom/mon_appli/_media/texte/liens.txt" />
</zones>
</root> |
Un fichier global CSS :
Un fichier global XSL :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="zone">
<xsl:variable name="ext">
<xsl:value-of select="substring-after(./@chemin,'.')"/>
</xsl:variable>
<xsl:variable name="affich">
<xsl:value-of select="./@type"/>
</xsl:variable>
<xsl:if test="$ext = 'avi' or $ext = 'wmv'">
<!-- Si positionnement de l'attribut "classid" dans la balise "object" -->
<!-- d'un média lu par Windows Media Player : -->
<!-- apparition de la barre de contrôle, malgré le "controller" à "false" !? -->
<!-- classid="clsid:6BF52A52-394A-11D3-B153-00C04F79FAA6" -->
<object
id="media_wmv"
data="{./@chemin}"
type="video/x-ms-wmv"
codebase="http://activex.microsoft.com/activex/controls/
mplayer/en/nsmp2inf.cab#Version=6,4,5,715">
<param name="src" value="{./@chemin}" />
<param name="autostart" value="true" />
<param name="bgcolor" value="#000000" />
<param name="controller" value="false" />
<param name="loop" value="true" />
<!-- Pour ie < 5 et Netscape <= 4 -->
<embed
src="{./@chemin}"
type="video/x-ms-wmv"
autostart="1" showcontrols="0" loop="1"
bgcolor="#000000"
/>
<!-- Texte alternatif : fonctionne mal sous Firefox : à voir -->
<!-- Média n°1 -->
</object>
</xsl:if>
<xsl:if test="$ext = 'mov'">
<object
id="media_mov"
data="{./@chemin}"
type="video/quicktime"
classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B"
codebase="http://www.apple.com/qtactivex/qtplugin.cab">
<param name="src" value="{./@chemin}" />
<param name="autostart" value="true" />
<param name="bgcolor" value="#000000" />
<param name="controller" value="false" />
<param name="loop" value="true" />
<!-- Pour ie < 5 et Netscape <= 4 -->
<embed
src="{./@chemin}"
type="video/quicktime"
pluginspage="http://www.apple.com/qtactivex/qtplugin.cab"
autostart="true" controller="false" loop="true"
bgcolor="#000000"
/>
<!-- Texte alternatif : fonctionne mal sous Firefox : à voir -->
<!-- Vidéo Quicktime -->
</object>
</xsl:if>
<xsl:if test="$ext = 'rm' or $ext = 'rmvb'">
<!-- type="audio/x-pn-realaudio-plugin" -->
<object
id="media_rm"
data="{./@chemin}"
classid="clsid:CFCDAA03-8BE4-11cf-B84B-0020AFBBCCFA"
codebase="http://www.codecguide.com/about_real.htm">
<param name="src" value="{./@chemin}" />
<param name="autostart" value="true" />
<param name="bgcolor" value="#000000" />
<param name="console" value="one" />
<param name="controls" value="ImageWindow" />
<param name="loop" value="true" />
<!-- Pour ie < 5 et Netscape <= 4 -->
<embed
src="{./@chemin}"
type="audio/x-pn-realaudio-plugin"
pluginspage="http://www.codecguide.com/about_real.htm"
autostart="true" controls="ImageWindow" console="one" loop="true"
bgcolor="#000000"
/>
<!-- Texte alternatif : fonctionne mal sous Firefox : à voir -->
<!-- Vidéo Real Media -->
</object>
</xsl:if>
<xsl:if test="$ext = 'swf'">
<!--
classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" -->
<object
id="media_flash"
data="{./@chemin}"
type="application/x-shockwave-flash"
bgcolor="#000000">
<param name="movie" value="{./@chemin}" />
<param name="autostart" value="true" /><!-- Même à "false", le Flash se lance automatiquement !? -->
<param name="bgcolor" value="#000000" />
<param name="loop" value="true" /><!-- Le Flash boucle tout de même !!! -->
<param name="quality" value="high" />
<!-- Pour ie < 5 et Netscape <= 4 -->
<embed
src="{./@chemin}"
type="application/x-shockwave-flash"
pluginspage="http://www.macromedia.com/shockwave/download/
index.cgi?P1_Prod_Version=ShockwaveFlash"
autostart="true" loop="true"
bgcolor="#000000"
quality="best"
/>
<!-- Texte alternatif : fonctionne mal sous Firefox : à voir -->
<!-- Animation Flash -->
</object>
</xsl:if>
<xsl:if test="$ext = 'jpg' or $ext = 'jpeg' or $ext = 'bmp' or $ext = 'gif' or $ext = 'png'">
<img src="{./@chemin}" alt="Une image promotionnelle" /><!-- height et width à voir ... (JAVA) -->
</xsl:if>
<xsl:if test="$ext = 'txt'">
<object data="{./@chemin}" type="text/plain" style="border: none" />
<xsl:if test="$affich = 'dynamique'">
<script type="text/javascript">
alert('{./@chemin}');
alert({./@chemin});
FicTxt({./@chemin});
</script>
</xsl:if>
</xsl:if>
</xsl:template>
</xsl:stylesheet> |
Des fichiers spécifiques au modèle sélectionné (modèle n° 1, pour l'exemple) :
modele_1.css
modele_1.xsl
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49
| <?xml version="1.0" encoding="ISO-8859-1" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:import href="global.xsl"/>
<xsl:output
method="html"
encoding="ISO-8859-1"
doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN"
doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
indent="yes"/>
<xsl:template match="/">
<html>
<head>
<title>Affichage 2 zones + texte défilant en pied de page</title>
<link rel="stylesheet" type="text/css" href="global.css"/>
<link rel="stylesheet" type="text/css" href="modele_1.css"/>
<script language="javascript" src="recupContenuTxt.js" />
</head>
<body>
<div class="global">
<div class="centre">
<div id="loading">
Chargement de la page en cours, merci de patienter.
</div>
<!-- Saisir "about:plugins" dans la barre d'adresse du navigateur -->
<!-- afin d'obtenir la liste des plugins activés. -->
<!-- Il s'agit en fait de simples fichiers .DLL (sous Windows) -->
<!-- Ils sont situés dans le répertoire plugins du profil utilisateur en cours. -->
<div class="zone" id="un">
<span/>
<xsl:apply-templates select="//zone[position()=1]"/>
</div>
<div class="zone" id="deux">
<span/>
<xsl:apply-templates select="//zone[position()=2]"/>
</div>
<div class="zone" id="trois">
<span/>
<xsl:apply-templates select="//zone[position()=3]"/>
</div>
<script language="JavaScript">
document.getElementById("loading").style.display = 'none';
</script>
</div>
</div>
</body>
</html>
</xsl:template>
</xsl:stylesheet> |
[EDIT] Le défilement du contenu d'un fichier texte, en JS, ne fonctionne pas ... c'est juste pour la petite histoire, car ça ne change rien à ma question propre au XML [/EDIT]
Partager