begin process at 2010 02 10 00:25:30
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Xml

 > SOMMAIRE DÉROULANT

SOMMAIRE DÉROULANT


 Information sur la source

 Description

Sommaire déroulant (xml+xslt+css+javascript+php5)

J'ai été surpris de ne pas trouver ce type de code, mais peut-être n'ai-je pas cherché au bon endroit?
La question se pose en effet de la présence de ce code ici, vu qu'il ne comporte que 3 lignes de php "véritable"; cependant, à force de lire les posts, j'ai compris que le traitement des fichiers au format xml constituait une préoccupation majeure de la plupart d'entre vous.
A vous de juger.
Quelques explications :
L'idée même de sommaire déroulant suppose la différenciation des chapitres en 2 catégories :
- les chapitres de type "branche" (assimilables aux "dossiers" d'une arborescence), d'expression xpath :
//chapitre[chapitre]
et qui contiennent d'autres chapitres.
- les chapitres de type "feuille" (assimilables aux "fichiers" d'une arborescence), d'expression xpath :
//chapitre[not(chapitre)]
et qui contiennent le texte "utile" du document.
- Question : et si un chapitre de type "branche", en plus de contenir des chapitres, contient aussi du texte?
- Réponse : son texte sera ignoré.

Source

  • <?php
  • header('Content-type: text/html; charset=iso-8859-1');
  • header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
  • header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
  • header('Cache-Control: no-cache, must-revalidate');
  • header('Pragma: no-cache');
  • ?>
  • <html>
  • <!--
  • - Date de création : 16/08/2007
  • - Objet : sommaire déroulant (xml+xslt+css+javascript+php5)
  • - Auteur : opossum_farceur
  • -->
  • <head>
  • <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
  • <meta Http-Equiv="Cache-Control" Content="no-cache">
  • <meta Http-Equiv="Pragma" Content="no-cache">
  • <meta Http-Equiv="Expires" Content=0>
  • <title></title>
  • <style type="text/css">
  • body {background-color:white; font-family:Arial;}
  • TABLE.table1 {width:100%; border:1px solid black;}
  • TH.th1 {background-color:#EEEEEE; border:1px solid black; padding:20px; font-size:32px;}
  • TD.td1 {background-color:#EEEEEE; border:1px solid black; padding:20px; font-size:14px; text-align:justify;}
  • TABLE.table2 {width:100%; border-style:none;}
  • TD.left {border-style:none; padding:0px; font-size:18px; color:blue;}
  • TD.right {border-style:none; padding:0px; text-align:right;}
  • SMALL {font-size:5px;} /* pour gérer les espaces entre les "icônes" */
  • UL {margin-left:20px; padding-left:0px;}
  • UL.root {margin-left:0px;}
  • UL.off {display:none;}
  • UL.on {}
  • LI.nomarker {list-style-type:none;}
  • A {color:blue;}
  • A.summary {text-decoration:none; font-size:18px;}
  • A.symbol {font-size:22px;}
  • A:hover {color:red;}
  • /* largeur du span pas traitée avec FF, pb aussi si le lien est souligné */
  • SPAN.sign {font-family:Courier New; font-size:20px; font-weight:bold; color:magenta; padding-right:10px;}
  • SPAN.number {color:black; padding-right:10px;}
  • </style>
  • <script language="Javascript">
  • /////////////////////////////////////////////////////////////////////////////////////////////////////////
  • function change(tag,id)
  • {
  • var ul=document.getElementById(id),s=tag.innerHTML;
  • if (ul.className=='off') {
  • ul.className='on';
  • tag.innerHTML=s.replace(/[+]/,'-'); // seul le premier caractère trouvé est remplacé
  • }
  • else {
  • ul.className='off';
  • tag.innerHTML=s.replace(/[-]/,'+');
  • }
  • tag.style.color='purple';
  • }
  • /////////////////////////////////////////////////////////////////////////////////////////////////////////
  • </script>
  • </head>
  • <body>
  • <?php
  • $xml=<<<XML
  • <document titre="--- &#160; Ma petite DEMO &#160; ---">
  • <chapitre titre="Chapitre un">
  • <chapitre titre="Chapitre un/un">
  • <P style="font-size:60px; color:teal;">
  • Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/un<BR/><BR/>
  • </P>
  • </chapitre>
  • <chapitre titre="Chapitre un/deux">
  • <P style="font-size:60px; color:silver;">
  • Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/deux<BR/><BR/>
  • </P>
  • </chapitre>
  • <chapitre titre="Chapitre un/trois">
  • <chapitre titre="Chapitre un/trois/un">
  • <P style="font-size:60px; color:olive;">
  • Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/trois/un<BR/><BR/>
  • </P>
  • </chapitre>
  • </chapitre>
  • </chapitre>
  • <chapitre titre="Chapitre deux">
  • <chapitre titre="Chapitre deux/un">
  • <P style="font-size:60px; color:navy;">
  • Bonjour,<BR/>ceci est le texte<BR/>du Chapitre deux/un<BR/><BR/>
  • </P>
  • </chapitre>
  • <chapitre titre="Chapitre deux/deux">
  • <P style="font-size:60px; color:maroon;">
  • Bonjour,<BR/>ceci est le texte<BR/>du Chapitre deux/deux<BR/><BR/>
  • </P>
  • </chapitre>
  • </chapitre>
  • </document>
  • XML;
  • $xsl='
  • <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  • <xsl:output encoding="ISO-8859-1"/>
  • <xsl:template match="document">
  • <TABLE class="table1">
  • <TR><TH class="th1"> <!-- titre du document -->
  • <xsl:value-of select="@titre"/>
  • </TH></TR>
  • <TR><TD class="td1"> <!-- traitement du sommaire : parcours récursif -->
  • <UL class="root">
  • <xsl:apply-templates select="chapitre"/>
  • </UL>
  • </TD></TR>
  • <xsl:for-each select="//chapitre[not(chapitre)]"> <!-- traitement du "contenu" : parcours itératif -->
  • <xsl:variable name="pos" select="position()"/>
  • <TR><TD class="td1">
  • <TABLE class="table2"><TR>
  • <TD class="left" id="{$pos}"> <!-- à gauche, le titre du chapitre -->
  • <SPAN class="number"><xsl:number level="multiple"/></SPAN>
  • <xsl:value-of select="@titre"/>
  • </TD>
  • <TD class="right"><FONT face="Webdings"> <!-- à droite, le système de "navigation" -->
  • <A class="symbol" href="#top" title="top">9</A>
  • <xsl:if test="$pos &gt; 1">
  • <SMALL>&#160;</SMALL><A class="symbol" href="#{$pos - 1}" title="précédant">3</A>
  • </xsl:if>
  • <xsl:if test="$pos &lt; last()"> <!-- espaces autour du "+" nécessaires -->
  • <SMALL>&#160;</SMALL><A class="symbol" href="#{$pos + 1}" title="suivant">4</A>
  • </xsl:if>
  • </FONT></TD>
  • </TR></TABLE>
  • <xsl:copy-of select="."/> <!-- copie du "contenu" sans traitement particulier -->
  • </TD></TR>
  • </xsl:for-each>
  • </TABLE>
  • </xsl:template>
  • <xsl:template match="chapitre">
  • <xsl:choose>
  • <xsl:when test="./chapitre"> <!-- c`est donc une "branche"! -->
  • <xsl:variable name="idvalue" select="generate-id()"/>
  • <LI class="nomarker">
  • <A class="summary" href="#" onClick="change(this,\'{$idvalue}\');">
  • <SPAN class="sign">+</SPAN>
  • <SPAN class="number"><xsl:number level="multiple"/></SPAN>
  • <U><xsl:value-of select="@titre"/></U>
  • </A>
  • <UL id="{$idvalue}" class="off"> <!-- identifiant fourni par "generate-id()" -->
  • <xsl:apply-templates select="chapitre"/>
  • </UL>
  • </LI>
  • </xsl:when>
  • <xsl:otherwise> <!-- c`est donc une "feuille"! -->
  • <LI class="nomarker">
  • <A class="summary" href="#{count(preceding::chapitre[not(chapitre)]) + 1}" onClick="this.style.color=\'purple\';">
  • <SPAN class="sign">&#160;</SPAN>
  • <SPAN class="number"><xsl:number level="multiple"/></SPAN>
  • <U><xsl:value-of select="@titre"/></U>
  • </A>
  • </LI>
  • </xsl:otherwise>
  • </xsl:choose>
  • </xsl:template>
  • </xsl:stylesheet>
  • ';
  • $proc=new XSLTProcessor;
  • $proc->importStyleSheet(DOMDocument::loadXML(utf8_encode($xsl)));
  • echo $proc->transformToXML(DOMDocument::loadXML(utf8_encode($xml)));
  • ?>
  • </body></html>
<?php
header('Content-type: text/html; charset=iso-8859-1');
header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
header('Last-Modified: '.gmdate('D, d M Y H:i:s').' GMT');
header('Cache-Control: no-cache, must-revalidate');
header('Pragma: no-cache');
?>

<html>

<!-- 
 - Date de création : 16/08/2007
 - Objet : sommaire déroulant (xml+xslt+css+javascript+php5)
 - Auteur : opossum_farceur
-->

<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<meta Http-Equiv="Cache-Control" Content="no-cache">
<meta Http-Equiv="Pragma" Content="no-cache">
<meta Http-Equiv="Expires" Content=0> 
<title></title>

<style type="text/css">
   body {background-color:white; font-family:Arial;}

   TABLE.table1 {width:100%; border:1px solid black;}
   TH.th1 {background-color:#EEEEEE; border:1px solid black; padding:20px; font-size:32px;}
   TD.td1 {background-color:#EEEEEE; border:1px solid black; padding:20px; font-size:14px; text-align:justify;}

   TABLE.table2 {width:100%; border-style:none;}
   TD.left {border-style:none; padding:0px; font-size:18px; color:blue;}
   TD.right {border-style:none; padding:0px; text-align:right;}

   SMALL {font-size:5px;}  /* pour gérer les espaces entre les "icônes" */

   UL {margin-left:20px; padding-left:0px;}
   UL.root {margin-left:0px;}
   UL.off {display:none;}
   UL.on {}
   LI.nomarker {list-style-type:none;}

   A {color:blue;}
   A.summary {text-decoration:none; font-size:18px;}
   A.symbol {font-size:22px;}
   A:hover {color:red;}
                           /* largeur du span pas traitée avec FF, pb aussi si le lien est souligné */
   SPAN.sign {font-family:Courier New; font-size:20px; font-weight:bold; color:magenta; padding-right:10px;}
   SPAN.number {color:black; padding-right:10px;}
</style>

<script language="Javascript">

/////////////////////////////////////////////////////////////////////////////////////////////////////////

function change(tag,id)
{
   var ul=document.getElementById(id),s=tag.innerHTML;

   if (ul.className=='off') {
      ul.className='on';
      tag.innerHTML=s.replace(/[+]/,'-');       // seul le premier caractère trouvé est remplacé
   }
   else {
      ul.className='off';
      tag.innerHTML=s.replace(/[-]/,'+');
   }
   tag.style.color='purple';
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////

</script>
</head>

<body>
<?php

$xml=<<<XML
<document titre="--- &#160; Ma petite DEMO &#160; ---">
   <chapitre titre="Chapitre un">
      <chapitre titre="Chapitre un/un">
         <P style="font-size:60px; color:teal;">
            Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/un<BR/><BR/>
         </P>
      </chapitre>
      <chapitre titre="Chapitre un/deux">
         <P style="font-size:60px; color:silver;">
            Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/deux<BR/><BR/>
         </P>
      </chapitre>
      <chapitre titre="Chapitre un/trois">
         <chapitre titre="Chapitre un/trois/un">
            <P style="font-size:60px; color:olive;">
               Bonjour,<BR/>ceci est le texte<BR/>du Chapitre un/trois/un<BR/><BR/>
            </P>
         </chapitre>
      </chapitre>
   </chapitre>
   <chapitre titre="Chapitre deux">
      <chapitre titre="Chapitre deux/un">
         <P style="font-size:60px; color:navy;">
            Bonjour,<BR/>ceci est le texte<BR/>du Chapitre deux/un<BR/><BR/>
         </P>
      </chapitre>
      <chapitre titre="Chapitre deux/deux">
         <P style="font-size:60px; color:maroon;">
            Bonjour,<BR/>ceci est le texte<BR/>du Chapitre deux/deux<BR/><BR/>
         </P>
      </chapitre>
   </chapitre>
</document> 
XML;

$xsl='
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output encoding="ISO-8859-1"/>

<xsl:template match="document">
   <TABLE class="table1">
      <TR><TH class="th1">                               <!-- titre du document -->
         <xsl:value-of select="@titre"/>
      </TH></TR>

      <TR><TD class="td1">                               <!-- traitement du sommaire : parcours récursif -->
         <UL class="root">
            <xsl:apply-templates select="chapitre"/>
         </UL>
      </TD></TR>

      <xsl:for-each select="//chapitre[not(chapitre)]">  <!-- traitement du "contenu" : parcours itératif -->
         <xsl:variable name="pos" select="position()"/>
         <TR><TD class="td1">
            <TABLE class="table2"><TR>
               <TD class="left" id="{$pos}">             <!-- à gauche, le titre du chapitre -->
                  <SPAN class="number"><xsl:number level="multiple"/></SPAN>
                  <xsl:value-of select="@titre"/>
               </TD>
               <TD class="right"><FONT face="Webdings">  <!-- à droite, le système de "navigation" -->
                  <A class="symbol" href="#top" title="top">9</A>
                  <xsl:if test="$pos &gt; 1">
                     <SMALL>&#160;</SMALL><A class="symbol" href="#{$pos - 1}" title="précédant">3</A>
                  </xsl:if> 
                  <xsl:if test="$pos &lt; last()">       <!-- espaces autour du "+" nécessaires -->
                     <SMALL>&#160;</SMALL><A class="symbol" href="#{$pos + 1}" title="suivant">4</A>
                  </xsl:if> 
               </FONT></TD>
            </TR></TABLE>

            <xsl:copy-of select="."/>                    <!-- copie du "contenu" sans traitement particulier -->
         </TD></TR>
      </xsl:for-each>

   </TABLE>
</xsl:template>

<xsl:template match="chapitre">
   <xsl:choose>
      <xsl:when test="./chapitre">                       <!-- c`est donc une "branche"! -->
         <xsl:variable name="idvalue" select="generate-id()"/>
         <LI class="nomarker">
            <A class="summary" href="#" onClick="change(this,\'{$idvalue}\');">
               <SPAN class="sign">+</SPAN>
               <SPAN class="number"><xsl:number level="multiple"/></SPAN>
               <U><xsl:value-of select="@titre"/></U>
            </A>
            <UL id="{$idvalue}" class="off">             <!-- identifiant fourni par "generate-id()" -->
                <xsl:apply-templates select="chapitre"/>
            </UL>
         </LI>
      </xsl:when>
      <xsl:otherwise>                                    <!-- c`est donc une "feuille"! -->
         <LI class="nomarker">
            <A class="summary" href="#{count(preceding::chapitre[not(chapitre)]) + 1}" onClick="this.style.color=\'purple\';">
               <SPAN class="sign">&#160;</SPAN>
               <SPAN class="number"><xsl:number level="multiple"/></SPAN>
               <U><xsl:value-of select="@titre"/></U>
            </A>
         </LI>
      </xsl:otherwise> 
   </xsl:choose>
</xsl:template>

</xsl:stylesheet>
';

$proc=new XSLTProcessor;
$proc->importStyleSheet(DOMDocument::loadXML(utf8_encode($xsl)));
echo $proc->transformToXML(DOMDocument::loadXML(utf8_encode($xml)));
?>
</body></html>



 Sources du même auteur

Source avec Zip SVGMORPHING
Source avec Zip ALGORITHME DE DOUGLAS-PEUKER
Source avec Zip DICTIONNAIRE DE RIMES
Source avec Zip Source avec une capture SMOOTH 3D CAMEMBERT
Source avec Zip Source avec une capture LES CAMEMBERTS 3D

 Sources de la même categorie

Source avec Zip Source avec une capture MINI-PROCESSEUR XPROC (PIPELINE XML) par ordiman85
Source avec Zip Source avec une capture XML MAPPING TO CLASS OBJECTS / CHARGEMENT / PARSING / MODIFI... par aKheNathOn
Source avec Zip Source avec une capture VIEWER POUR JALBUM SKIN CHAMELEON LIVRE D'OR par ym_trainz
Source avec Zip Source avec une capture PARSEUR XML par petifa
FICHIER XML => TABLEAU ASSOCIATIF par durealex

 Sources en rapport avec celle ci

CLASS RECHERCHE PHP5 POO par mtrix000
CLASS AUTHENTIFICATION PHP5 POO par mtrix000
CLASS PAGINATION PHP5 POO par mtrix000
Source avec Zip API LDAP POO PHP5 (ENCAPSULATION DE L'API LDAP DE PHP) par emericv
Source avec Zip Source avec une capture CLASS DE MENU DÉROULANT PHP5 par cedriclomb

Commentaires et avis

Commentaire de Evangun le 17/08/2007 00:50:22

Salut,
Tu aurais une url de test par hasard ? je regarderais bien ce que ça donne. Parce qu'il faut installer libxslt pour que ça fonctionne, c'est ça ?

Commentaire de webdeb le 17/08/2007 09:26:44

Ce que je trouve dommage dans ton application, c'est que le code XML / XHTML que tu utilises est mal formé par endroit... La syntaxe d'un code XML est très stricte, les balises en majuscules ne sont pas autorisées et les balises <font> sont largement dépréciées.

Une démo en ligne serait aussi la bien venue stp :)

Commentaire de kylekatarnls le 17/08/2007 12:17:44

Ben j'aimerais bien un lien moi aussi ^^

Commentaire de kishkaya le 17/08/2007 15:49:32

Tu nous présentes du XML/XSL mais t'as pas fait un code xhtml ...
Essaye d'ajouter une DTD et de mettre en minuscule les balises.

Je trouve la source tres intéressante mais il y a des exemples qui vont plus loin dans la doc de php.net.

-> http://fr.php.net/manual/fr/ref.xsl.php
-> http://fr.php.net/manual/fr/function.xslt-process.php

Sinon c'est une super initiative

Commentaire de opossum_farceur le 17/08/2007 17:30:52

- l'url de test :
http://michel.vanthodiep.free.fr/tests/sommaire.php5
- j'ai développé cette appli en local avec wamp, et j'ai dû installer l'extension "php_xsl", qui correspond à l'extension "xsl" du manuel.
- les balises en majuscules : qu'elles ne soient pas autorisées, franchement je ne le savais pas, j'ai même fait exprès de les mettre ainsi pour que l'on comprenne bien qu'il s'agit de balises html.
- la balise <font> : effectivement elle est largement dépréciée, mais c'est le seul moyen que j'ai trouvé pour faire afficher des caractères spéciaux par FireFox.
- Pour continuer sur les navigateurs, cette appli est compatible Internet Explorer 6.0 et FireFox 2.0, reste à croiser les doigts pour que çà fonctionne avec les autres, mais, par pitié, ne me parlez pas du navigateur qu'ils ont pondu chez Orange!
- un tuto utile à potasser sur le langage xslt :
http://www.zvon.org/xxl/XSLTutorial/Output_fre/index.html

Commentaire de webdeb le 17/08/2007 23:28:39

>> la balise <font> : effectivement elle est largement dépréciée, mais c'est le seul moyen que j'ai trouvé pour faire afficher des caractères spéciaux par FireFox.

Tu entends quoi par là ? Firefox sait très bien afficher tous les caractères spéciaux.

Commentaire de opossum_farceur le 18/08/2007 12:48:16

kishkaya,
- Les exemples fournis par le manuel et concernant l'extension "xsl", sont peu nombreux et guère intéressants, ce qui se peut se comprendre vu que l'on sort, avec le langage xslt, du domaine
propre à php.
- Quant à la fonction "xslt_process", elle fait partie de l'extension "xslt" qui n'est plus intégrée dans PHP depuis PHP 5.0 (à en croire le manuel).
- Pour ce qui est d'ajouter une DTD, l'idée n'est pas des plus heureuse puisqu'il faudrait y mentionner toutes les balises utilisées dans le document xml. L'appli fournit l'emballage, mais le contenu, c'est l'utilisateur final qui l'ammène et c'est donc à lui, il me semble, de définir la DTD.

webdeb,
Ce que j'entends par caractères spéciaux, c'est les caractères utilisés dans l'appli pour "naviguer" de chapitre en chapitre.
Essaie çà :

<p style="font-family:'Webdings'; font-size:60px;">3</p>
<p style="font-family:'Webdings'; font-size:60px;">&#51</p>

Ces 2 lignes affichent la même chose avec 2 syntaxes légèrement différentes.
Le problème, c'est que IE et FF ne réagissent pas de la même manière.
Pour les mettre d'accord, je n'ai trouvé que la balise <font> qui, bien que largement dépréciée, n'en n'est pas moins d'une grande efficacité!

Commentaire de kishkaya le 18/08/2007 22:08:37

Bonjour,
Je parlais d'une DTD pour ta page HTML, un doctype.
Apres ca vaudrait peut etre le coup de passer en xhtml, de mettre des petites balises, de se passer de table...
C'est a toi de voir

Commentaire de stay le 20/08/2007 09:31:47

#Pour tes caractères spéciaux tu peux les remplacer de cette façon, …

<?php
/**
* Utilisation
* -----------
* $char = new incChar();
*
* $recherche = strtr($_POST['recherche'], $char->entCar);
* ou
* $recherche = strtr($_POST['recherche'], $char->carEnt);
*/
class incChar {
/**
* L'entité caractère vers le caractère
*
* @var string
*/
public $entCar = array(
"&quot;" => "\"", #Guillemet double
"&amp;" => "&", #Et commercial
"&lt;" => "<", #Inférieur à
"&gt;" => ">", #Supérieur à
"&nbsp;" => " ", #Espace insécable
"&iexcl;" => "¡", #Exclamation inversée
"&cent;" => "¢", #Symbole centime
"&pound;" => "£", #Symbole livre
"&curren;" => "¤" #Symbole monétaire
);

/**
* le caractère vers l'entité caractère
*
* @var string
*/
public $carEnt = array(
"\"" => "&quot;", #Guillemet double
"&" => "&amp;", #Et commercial
"<" => "&lt;", #Inférieur à
">" => "&gt;", #Supérieur à
//" " => "&nbsp;", #Espace insécable
"¡" => "&iexcl;", #Exclamation inversée
"¢" => "&cent;", #Symbole centime
"£" => "&pound;", #Symbole livre
"¤" => "&curren;" #Symbole monétaire
);
}
?>

Commentaire de opossum_farceur le 21/08/2007 00:09:41

STAY,
Merci pour ta classe de conversion, mais j'ai bien peur qu'elle ne soit d'aucune utilité. Tu as été abusé par l'expression "caractères spéciaux", c'est de ma faute et je m'en excuse, j'aurais dû parler à la place de "polices de symboles" (exemple : Webdings), et le problème se situe alors au niveau des feuilles de style CSS plutôt qu'au niveau de PHP.
J'ai d'ailleurs passé toute ma soirée à essayer d'afficher avec FireFox cette satanée police Webdings autrement qu'en utilisant la balise "largement dépréciée" qu'est <font> : en pure perte.
Aussi l'ajout de la DTD préconisée par KISHKAYA attendra encore un peu, vu que la balise <font> ne fait pas partie du standard xhtml.

Commentaire de malalam le 21/08/2007 02:57:06 administrateur CS

@webdeb :
"La syntaxe d'un code XML est très stricte, les balises en majuscules ne sont pas autorisées et les balises <font> sont largement dépréciées."
Oula..doucement, tu mélanges bcp de choses là. La balise <font>, c'est du html, PAS du xml. Je sais que tu le sais, mais tu t'es mal exprimé, là. La balise font est dépréciée, pas interdite. Du moins en html. Mais bon, TRES fortement déconseillée de tte façon.
XML n'interdit aucunement les majuscules pour les éléments (ou les attributs, ou les textes etc...). Que nenni. XML est sensible à la casse, c'est tout. Cela veut dire que <item> et <ITEM> sont deux noeuds différents.
En XHTML, on a fixé les éléments et attributs en minuscules, justement pour cela (alors que en HTML, <div> est le même élément que <DIV>. C'est impossible avec le XML, et donc avec le XHTML).

Voilà, c'était juste pour ne pas laisser une approximation embrouiller d'éventuels lecteurs.

Commentaire de opossum_farceur le 21/08/2007 18:56:07

Après cette mise au point sans appel de MALALAM, je lance le grand jeu CS du mois (premier prix : un week-end à Las Vegas avec Bill Gates) :

afficher correctement dans FireFox 2.0

<p><font face="Webdings">&#57</font></p>

sans utiliser la balise <font>

Commentaire de kishkaya le 21/08/2007 19:42:45

un <span style="font-family: Webding;">&#57</span> ne suffit pas je suppose =)

Commentaire de malalam le 21/08/2007 19:50:20 administrateur CS

NB : pour le xsl en php, voir du côté de XSLTProcessor, que j'utilise allègrement dans certaines de mes sources, notamment XML MENU, pour ceux que cela intéresse.
Pour ton Webdings, j'ai la flemme de tester, làn chez moi...qu'est-ce qui ne passe pas, au juste, sur Firefox?

Commentaire de opossum_farceur le 22/08/2007 00:49:07

Ce qui ne passe pas :
<span style="font-family:Webdings;">&#57</span>
kishkaya, n'oublies pas le "s" à la fin de "Webdings", sans quoi çà marche pas non plus avec IE!

Commentaire de malalam le 23/08/2007 13:55:04 administrateur CS


Ah, ben parceque Webdings n'est pas "w3c compliant".
Elle n'est pas conforme aux standards html.
Pourquoi? Bah c'est simple : un des maîtres mots des normes html recommandées par le W3C est "accessibilité" : que vos sites soient visibles par tous dans les meilleures conditions possibles.
Or, Webdings est une police de caractère exclusivement Microsoft. Elle a été créée par Microsoft, POUR les OS Microsoft. En conséquence, un mec venant sur ton site et utilisant Linux, ou MACOS X, etc...ne possèdera pas Webdings sur son système et ton site ne s'affichera pas, ou très très très mal.
Firefox respecte en partie, là-dessus, les recommandations du W3C. En partie puisque avec du vieux HTML déprécié (<font>), ça passe. Mais encore une fois, ça ne passera que si l'utilisateur de ton site est sous Windows...dommage, non?
Essaye avec Opera (qui est le navigateur respectant le mieux ces normes), tu auras une surprise : ni la balise <span>, ni la balise <font> ne fonctionneront.

Commentaire de malalam le 23/08/2007 14:02:05 administrateur CS

Et pour coder correctement, tu as peu de latitudes là-dessus : utilises des images (avec un attribut alt pour le contenu alternatif hein ;-) ), ou bien :
<span style="font-size: xx-large">&#8656</span>

Toutes les entités html ici :
http://www.w3.org/TR/REC-html40/sgml/entities.html#h-24.2

Commentaire de opossum_farceur le 23/08/2007 21:30:49

Merci MALALAM pour ces précisions, ceux qui verront "934" (ou autre chose encore!) s'afficher sur leur page sauront donc à quoi s'en tenir. Pourtant mon idée partait d'un bon sentiment, à savoir
simplifier les choses à l'extrème en se débarrassant des .gif et autres .png et caser tout le code dans la zone "source" de la page sans avoir à faire de .zip, mais bon...
Rendre une application compatible avec tous les OS et tous les navigateurs (sans parler des diverses définitions d'écran et des spécificités concernant les non-voyants) est un challenge et
constitue un vrai travail, au sens ou un travail est censé être fastidieux et répétitif.
Dire que les FAI se mettent depuis peu à développer leur propre navigateur et qu'ils font évidemment en sorte qu'il soit utilisé en priorité par le client lambda, le développeur "web" a encore du pain sur la planche.

Commentaire de malalam le 23/08/2007 22:04:48 administrateur CS

Du pain rassi, ouais...
Faire un site qui respecte les normes, l'accessibilité, relève de la gageure. Ca n'a jamais changé, je pense que ça ne changera jamais. Et c'est pas ce que j'aime le plus faire dans le web...des pieds et des mains pour que mon site puisse être vu par tout le monde...alors que ce devrait couler de source.
Je suis bien d'accord.
MAIS...si on combat ces comportements : FAI, sociétés créant des navigateurs fermés...avec des sites respectant au plus les normes, sans tenir compte des mégas fonctionnalités propriétaires qu'ils ajoutent à leur produit...ça les fera peut-être réflêchir-ou plier- un jour.

Commentaire de kishkaya le 23/08/2007 23:01:29

Morale : aux prochaines élections votez W3C.

Commentaire de opossum_farceur le 25/08/2007 00:34:51

Encore sur les navigateurs, sachez que la transformation XSLT peut s'effectuer avec JavaScript :
http://xml.developpez.com/sources/?page=transfo_param
Je l'ai testé, çà fonctionne impec.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

Récupérer variable d'un menu déroulant. [ par DarkSchneider ] Bonjour, un nouveau problème m'amène en ces lieux. Voilà, je voudrai savoir comment récupérer la valeur saisi dans un menu déroulant. Voici le formmail.php [ par pyranhaz ] J'ai un formmail en phpIl fait bien son travail et je l'apprécie, mais il y a un hic assez énervant qui m'échappe...Tous les menus déroulant ne peuven Menu déroulant à partir d'une requête mysql [ par tweeder ] Bonjour,J'ai essayé de trouver sur le site un exemple pour ma question mais j'ai pas trouvé. J'aimerais généré un menu déroulant html à partir des élé Amélioration d'une menu déroulant [ par perig ] Salut !!!Voilà, j'ai le script suivant :&lt;form name='themeselect' method='post' action='index.php3?Theme=Theme' target='_self'&gt; &lt;select name Menu déroulant automatique ... [ par oki972 ] Bonjour je suis débutant et j'ai un gros soucis.J'ai une base de donnée qui recense des titres de livres et pour supprimer le champ correspondant a un menu déroulant [ par angelique ] Bonjour,Savez vous (ou est il possible) de faire apparaitre un menu déroulant dans un menu déroulant? Merci Menu déroulant [ par bosco ] Bjr, je voudré savoir comment faire un menu déroulant ?merci et @ + Image dans menu déroulant [ par jadiema ] Bonjour, Existe-t-il un moyen d'afficher une image au format .gif ou jpg dans un menu déroulant avec PHP?Merci d'avance de votre aide, jérémie Menu déroulant [ par tweeder ] Ma question est fort simpleJe dois valider un formulaire mais sans perdre les données qui sont inscrites. Je réinscris dans le formulaire les données aide menu deroulant [ par macroute ] comment modifier le contenue d'un menu deroulant en fonction du choix selectionner dans un menu deroulant situe sur la meme page a partir d'une base s


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 0,624 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales