IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Valider XML Discussion :

[XSLT][javascript]Fichier XSLT et rendu sur divers navigateurs


Sujet :

Valider XML

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut [XSLT][javascript]Fichier XSLT et rendu sur divers navigateurs
    Bonjour,
    Voilà mon affaire du moment : J'ai un code en XSLT que j'utilise pour parser un fichier XML (affichage interactif via des fenêtres ouvrantes, quand on clique au niveau des titres). Ajouté à cela que j'utilise javascript (et jQuery) pour gérer les animations évoquées. Voilà pour la présentation... Après, dans le concret, ma question est la suivante :
    * Pour augmenter la probabilité de voir s'afficher correctement mes animations sur les navigateurs les plus classiques (Firefox et Internet Explorer...), cela a t-il un sens de vérifier la validité de mon code (via ce genre de site...), pour le rendre le plus conforme possible aux recommandations du W3C (XHTML1.0) ?
    Voilà, par avance Merci pour tout avis ou suggestion que vous sauriez me faire, à ce propos !

    Code XSLT concerné (si besoin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD XHTML 1.0 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"/>
     
    <xsl:template match="/">
    	<html xmlns="http://www.w3.org/1999/xhtml">
    	<head>
    	<title>Audio</title>
     
    	<link type="text/css" rel="stylesheet" href="Audio/Audio_css.css" />
     
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-1.4.2.min.js"></script>
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-ui-1.8.1.custom.min.js"></script>
    	<script type='text/javascript' src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery.timers.js"></script>
    	<script type='text/javascript'>
    	//<![CDATA[
    		$(function(){
     
    			// Paramétrage / CSS -> conformité / W3C (Via jQuery)
    			$(".Container").css("width", 400);
     
     
    			// Ouverture, blocage ou fermeture / fenêtre cachée, via survol ou click sur [+]
    			// (Effets sympas: 'easeInOutCirc', 'easeInOutQuart', 'easeInOutQuint' ou 'easeInOutCubic')
    			$('#bouton1')
    				.mouseenter(descente1)
    				.mouseenter(tooltip)
    				.mouseleave(reset_tempo)
    				.mouseleave(montee1)
    				.toggle( // Si click -> (dé)blocage / disparition / texte caché...
    					function(){
    						$(this).unbind('mouseleave',montee1); 
    					},
    					function(){
    						$(this).mouseleave(montee1);
    					}
    				);
    			function descente1() {
    				$('#bouton1')
    					.unbind('mouseenter',descente1); // Blocage anti-rebonds (si survol répété de l'image)
    				$('#message_numero1').animate({
    					height:'show'
    					},900,'easeInOutCirc',function(){$('#bouton1').mouseenter(descente1);}); // Annulation / Blocage anti-rebonds
    			};
    			function montee1() {
    				$('#message_numero1').animate({
    					height:'hide'
    					},900);
    			};
     
    $('#bouton2').mouseenter(descente2).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee2).toggle(function(){$(this).unbind('mouseleave',montee2);},function(){$(this).mouseleave(montee2);});function descente2(){$('#bouton2').unbind('mouseenter',descente2);$('#message_numero2').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton2').mouseenter(descente2);});};function montee2(){$('#message_numero2').animate({height:'hide'},900);};
    $('#bouton3').mouseenter(descente3).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee3).toggle(function(){$(this).unbind('mouseleave',montee3);},function(){$(this).mouseleave(montee3);});function descente3(){$('#bouton3').unbind('mouseenter',descente3);$('#message_numero3').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton3').mouseenter(descente3);});};function montee3(){$('#message_numero3').animate({height:'hide'},900);};
    $('#bouton4').mouseenter(descente4).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee4).toggle(function(){$(this).unbind('mouseleave',montee4);},function(){$(this).mouseleave(montee4);});function descente4(){$('#bouton4').unbind('mouseenter',descente4);$('#message_numero4').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton4').mouseenter(descente4);});};function montee4(){$('#message_numero4').animate({height:'hide'},900);};
    $('#bouton5').mouseenter(descente5).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee5).toggle(function(){$(this).unbind('mouseleave',montee5);},function(){$(this).mouseleave(montee5);});function descente5(){$('#bouton5').unbind('mouseenter',descente5);$('#message_numero5').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton5').mouseenter(descente5);});};function montee5(){$('#message_numero5').animate({height:'hide'},900);};
    $('#bouton6').mouseenter(descente6).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee6).toggle(function(){$(this).unbind('mouseleave',montee6);},function(){$(this).mouseleave(montee6);});function descente6(){$('#bouton6').unbind('mouseenter',descente6);$('#message_numero6').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton6').mouseenter(descente6);});};function montee6(){$('#message_numero6').animate({height:'hide'},900);};
    $('#bouton7').mouseenter(descente7).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee7).toggle(function(){$(this).unbind('mouseleave',montee7);},function(){$(this).mouseleave(montee7);});function descente7(){$('#bouton7').unbind('mouseenter',descente7);$('#message_numero7').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton7').mouseenter(descente7);});};function montee7(){$('#message_numero7').animate({height:'hide'},900);};
    $('#bouton8').mouseenter(descente8).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee8).toggle(function(){$(this).unbind('mouseleave',montee8);},function(){$(this).mouseleave(montee8);});function descente8(){$('#bouton8').unbind('mouseenter',descente8);$('#message_numero8').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton8').mouseenter(descente8);});};function montee8(){$('#message_numero8').animate({height:'hide'},900);};
    $('#bouton9').mouseenter(descente9).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee9).toggle(function(){$(this).unbind('mouseleave',montee9);},function(){$(this).mouseleave(montee9);});function descente9(){$('#bouton9').unbind('mouseenter',descente9);$('#message_numero9').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton9').mouseenter(descente9);});};function montee9(){$('#message_numero9').animate({height:'hide'},900);};
    $('#bouton10').mouseenter(descente10).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee10).toggle(function(){$(this).unbind('mouseleave',montee10);},function(){$(this).mouseleave(montee10);});function descente10(){$('#bouton10').unbind('mouseenter',descente10);$('#message_numero10').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton10').mouseenter(descente10);});};function montee10(){$('#message_numero10').animate({height:'hide'},900);};
     
     
    			// y = coordonnée verticale de la souris
    			document.onmousemove = function(e){
    				if(!e){
    					e = window.event;
    				}
    				y = e.clientY;
    			};
    			i=1; // Nombre d'affichages du tooltip
     
    			function tooltip() {
    				if (i==1) {
    					// $("#tooltip").css("left", -125).css("top", 3); // Ajustement y du tooltip à la coordonnéee verticale de l'image [+]
    					document.getElementById('tooltip').style.top=y-25+"px";// Ajustement y du tooltip à la coordonnéee verticale y de la souris (précédemment définie)
    					$("#tooltip").oneTime("1s", function() { // Si le survol de l'image est > à 5 sec-> le Tooltips apparait (oneTime -> http://plugins.jquery.com/project/timers)
    						$("#tooltip").fadeIn(2500).delay(2500).fadeOut(1000);
    						i++; // Pour empêcher que le tooltip s'affiche plus d'une fois
    					});
    				}
    			};	
    			function reset_tempo() {
    				$("#tooltip").stopTime(); // Arrêt de la tempo oneTime() si on quitte l'image (stopTime -> http://plugins.jquery.com/project/timers)
    				$("#tooltip").clearQueue();
    				$("#tooltip").fadeOut(1000);
    			};	
     
    		})
    	//]]>
    	</script>
     
    	</head>
    	<body bgcolor="#FFFFFF">
     
    	<div class="Container">
    		<!-- Appel procédure permettant d'afficher chaque bloc de lignes -->
    		<xsl:apply-templates select="enregistrements/auteur/ressource/regroupement" />
    	</div>
     
    	<!-- Image s'affichant 1 fois (quelques secondes) pour proposer de cliquer sur [+] si on le survole -->
    	<div><img id="tooltip" src="Audio/images/Cliquez ici.png"  alt="" /></div>
     
    	</body>
    	</html>
    </xsl:template>
     
    <xsl:template match="regroupement">
        <xsl:apply-templates select="ligne">
    		<!-- "plusCount" -> Comptage du nombre de "cousins" précédant la balise <plus> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <plus> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->
    		<xsl:with-param name="plusCount" select="count(preceding-sibling::*/*/plus)"/> 
    		<!-- "imageCount" -> Comptage du nombre de "cousins" précédant la balise <image> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <image> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->		
    		<xsl:with-param name="imageCount" select="count(preceding-sibling::*/*/image)"/> 
    	</xsl:apply-templates>
    	<div class="Espace" style="width:389px"></div> <!-- Le "+2" sert à prolonger l'effet d'ombré sur la droite -->
    </xsl:template>
     
     
    <xsl:template match="ligne">
    	<xsl:param name="plusCount"/>
    	<!-- Test si il y a une balise encastrée "<plus>" -->
    	<xsl:if test="plus">
    		<!-- Calcul du numéro d'apparition de la balise encastrée "<plus>" concernée 
    		( =f(nombre de cousins précédents + nombre de frères précédents) ) -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="bouton"><xsl:value-of select="concat('bouton', $compteur_de_lignes)" /></xsl:variable>
    		<img id="{$bouton}" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif"  alt=""/>
     
    	</xsl:if>
    	<xsl:if test="not(plus or image)"> <!-- Sinon... -->
    		<div class="Bouton_rien">
    		</div>
    	</xsl:if>
     
    	<!-- GESTION PARTIE TEXTE / LA BALISE <ligne> -->
     
    	<xsl:if test="(not(name(following-sibling::*[position()=1]) = 'extrait')) and (not(name(following-sibling::*[position()=1]) = 'surf'))">
    		<div class="Texte" style="width:367px">
    			<xsl:value-of select="text()"/> <!-- Affiche le contenu de la balise actuelle (<ligne>) sans afficher celui de sa balise enfant (<petit>) -->
    		    <xsl:apply-templates select="petit"/>
    		</div>
    	</xsl:if>	
     
     
     
    	<div class="Ombre_ligne_d"></div>
     
    	<xsl:if test="plus"> <!-- Balise encastrée "<plus>" ? -->
    		<!-- Numérotation / id "message_numero..." -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="message_numero"><xsl:value-of select="concat('message_numero', $compteur_de_lignes)" /></xsl:variable>
    		<xsl:variable name= "texte_style"><xsl:value-of select= "plus/@style"/></xsl:variable> <!-- Exemple: si @texte="fluo" -->
     
    		<xsl:variable name= "texte_recu"><xsl:value-of select= "plus/text()"/></xsl:variable>
    		<xsl:variable name= "info_complete"><xsl:value-of select="concat($texte_recu, '
    ')" /></xsl:variable>
    		<!-- Gestion / texte caché -->
     
    		<div id="{$message_numero}" class="Texte_caché" style="display:none; width:375px">
    			<span class="{$texte_style}"><xsl:value-of select="$info_complete"/></span> <!-- Affichage éventuel du texte caché -->
    			 <!-- Permet de faire un "retour chariot" pour afficher une ligne vide juste après le texte du xml -->
    		</div>
     
    	</xsl:if>	
     
    </xsl:template>
     
    </xsl:stylesheet>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par souffle56 Voir le message
    * Pour augmenter la probabilité de voir s'afficher correctement mes animations sur les navigateurs les plus classiques (Firefox et Internet Explorer...), cela a t-il un sens de vérifier la validité de mon code (via ce genre de site...), pour le rendre le plus conforme possible aux recommandations du W3C (XHTML1.0) ?
    Le XHTML n'est pas vraiment géré par les navigateurs actuels. En fait ils font comme si c'était du HTML 4.01 et basta. L'ennui c'est qu'avec un tel comportement, les documents sont souvent, ni valide HTML 4.01, ni XML bien formé.
    Le XHTML n'est donc pas très intéressant comme format à présenter au navigateur. Ça n'a pas pris.

    Vérifier la validité du code, pour du HTML 4.01, oui, c'est intéressant, dans la mesure où les navigateurs sont mis à jour fréquemment, et que du code non valide pourrait très bien faire autre chose d'une version à l'autre.
    Attention quand même, la validité du code est secondaire vis-à-vis de la fonctionnalité du site. Deux ou trois trucs ne peuvent pas se faire avec du code absolument valide, et dans ce cas, si les navigateurs marchent comme ça quand même, tant pis.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup, thelvin,
    pour la pertinence de ta réponse; c'est exactement les informations dont j'avais besoin pour m'aider à préciser l'intérêt ou pas de tel ou tel doctype, notament, en l'occurence, en XSLT ! A ce propos, je viens de reprendre un article trouvé sur Internet que je trouve extrêmement bien fait, pour m'aider à préciser, via tes argument, le doctype que je vais utiliser... Concernant le HTML4.01 strict, voilà ce qu'ils mettent :
    Comme en HTML4.01 transitional :
    * le document est du HTML : il ne peut pas être traité comme du XML ;
    Si je me fie à tes arguments (qui, apparemment, tiennent la route), ce qu'ils disent serait obsolète, du fait que les navigateurs, en fait, n'ont pas suivi véritablement le standard XHTML 1, c'est bien cela

    Sinon, je suis confronté, en l'occurence, à un problème que je n'arrive, pour l'instant, ni à comprendre, ni à résoudre, concernant mon programme du moment (voir code XSLT ci-dessus); à savoir :

    * Pourquoi, quand je mets dans mon code XSLT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="{$bouton}" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif"  alt=""/>
    Le navigateur affiche (exemple pris ici pour le 3ème bouton [+]):

    Sous Firefox,IE7 ou IE8 :
    * Code source original :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img xmlns="" id="bouton3" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif" alt="">
    * Code "Source de l'élément avec style" (Depuis le debugger intégré de IE8) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <IMG id="bouton3" class="Bouton_plus" alt="" 	src="http://souffle56.ovh.org/Site/Tests/Multimedia/Audio/images/Plus_mini_2.gif" xmlns="" jQuery1274205720468="4" />
    Autrement dit, pourquoi les balises image n'apparaissent pas sous la forme <img .../> mais sous la forme <img ...> (Balise ouverte, sans le "/" à la fin) Est-ce le navigateur qui fait cette omission, ou bien est-ce plutôt au niveau de la transformation XML/XSLT Ou est-ce, là encore, une question de Doctype mal choisi
    Merci si quelqu'un peut m'expliquer cela pour m'aider à arranger la situation !

    Rem: Pour info (Si, des fois, ça pouvait avoir une incidence), voilà le code que j'utilise pour associer la page XSLT à la page XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
       $xslDoc = new DOMDocument();
       $xslDoc->load("Audio/Audio_ESSAI.xsl");
     
       $xmlDoc = new DOMDocument();
       $xmlDoc->load("ENREGISTREMENTS_XML_ESSAI.xml");
     
       $proc = new XSLTProcessor();
       $proc->importStylesheet($xslDoc);
       echo $proc->transformToXML($xmlDoc);
    ?>
    Ainsi que le code XML (Si besoin):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    <?xml version="1.0" encoding="UTF-8"?>
     
    <enregistrements>	
    	<auteur>
    		<ressource titre="Un titre super important" site="#">
    			<regroupement sous_titre="Titre du regroupement">
    				<ligne>Mon 1er texte
    					<plus>Je suis plutôt content... Je suis plutôt content... Je suis plutôt content... Je suis plutôt content... Je suis plutôt content... </plus>
    				</ligne>
    				<ligne>Mon 2ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 3ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 4ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 5ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 6ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 7ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 8ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 9ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    				<ligne>Mon 10ème texte
    					<plus>Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... Je suis super content... </plus>
    				</ligne>
    			</regroupement>
    		</ressource>
    	</auteur>	
    </enregistrements>

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Si tu ne fais plus de xhtml, tu devrais virer la déclaration du namespace :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html xmlns="http://www.w3.org/1999/xhtml">

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Merci beaucoup Morbo,
    Justement, je me demandais, du fait, quoi faire de cette fameuse déclaration :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <html xmlns="http://www.w3.org/1999/xhtml">
    Tu me donnes la réponse (-> virée, tout simplement !)... Ouf !
    Sinon, à propos de ma question concernant la balise fermée qui devient ouverte, quelqu'un a un avis

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    J'ai fait le test chez moi et enlever le namespace résout aussi ce pb de balise.
    Après je comprend pas trop le pourquoi .

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bon ben, apparemment, y a un mystère qui m'échappe d'autant plus... que je viens de refaire les essais, en reprenant texto le même code XSLT que celui précisé ci-dessus (en passant juste le doctype en HTML 4.0 et en retirant le namespace -> voir code ci-dessous)..., ajusté au même fichier XML, via le même pgm PHP que celui ci-dessus et... voilà un extrait du code source (Idem sous Firefox 3.6.3, IE7 et IE8):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="bouton1" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif" alt="">
    -> A noter l'absence toujour manifeste du fameux "/" avant le ">" !
    *Aurais-je oublié quelque chose ?
    * Morbo, Ca a l'air de mieux se présenter, de ton coté -> Es-tu passé par le même code PHP (précisé un peu plus haut) pour faire tes essais ? ou as-tu eu une autre approche plus "inspirée" pour ajuster la XSLT à la XML ?
    * As tu utilisé le même code XSLT que celui ci-dessous ?
    Merci si tu peux me préciser !

    Ps: Le code XSLT (après réajustements):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
     
    <xsl:template match="/">
    	<html>
    	<head>
    	<title>Audio</title>
     
    	<link type="text/css" rel="stylesheet" href="Audio/Audio_css.css" />
     
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-1.4.2.min.js"></script>
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-ui-1.8.1.custom.min.js"></script>
    	<script type='text/javascript' src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery.timers.js"></script>
    	<script type='text/javascript'>
    	//<![CDATA[
    		$(function(){
     
    			// Paramétrage / CSS -> conformité / W3C (Via jQuery)
    			$(".Container").css("width", 400);
     
     
    			// Ouverture, blocage ou fermeture / fenêtre cachée, via survol ou click sur [+]
    			// (Effets sympas: 'easeInOutCirc', 'easeInOutQuart', 'easeInOutQuint' ou 'easeInOutCubic')
    			$('#bouton1')
    				.mouseenter(descente1)
    				.mouseenter(tooltip)
    				.mouseleave(reset_tempo)
    				.mouseleave(montee1)
    				.toggle( // Si click -> (dé)blocage / disparition / texte caché...
    					function(){
    						$(this).unbind('mouseleave',montee1); 
    					},
    					function(){
    						$(this).mouseleave(montee1);
    					}
    				);
    			function descente1() {
    				$('#bouton1')
    					.unbind('mouseenter',descente1); // Blocage anti-rebonds (si survol répété de l'image)
    				$('#message_numero1').animate({
    					height:'show'
    					},900,'easeInOutCirc',function(){$('#bouton1').mouseenter(descente1);}); // Annulation / Blocage anti-rebonds
    			};
    			function montee1() {
    				$('#message_numero1').animate({
    					height:'hide'
    					},900);
    			};
     
    $('#bouton2').mouseenter(descente2).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee2).toggle(function(){$(this).unbind('mouseleave',montee2);},function(){$(this).mouseleave(montee2);});function descente2(){$('#bouton2').unbind('mouseenter',descente2);$('#message_numero2').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton2').mouseenter(descente2);});};function montee2(){$('#message_numero2').animate({height:'hide'},900);};
    $('#bouton3').mouseenter(descente3).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee3).toggle(function(){$(this).unbind('mouseleave',montee3);},function(){$(this).mouseleave(montee3);});function descente3(){$('#bouton3').unbind('mouseenter',descente3);$('#message_numero3').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton3').mouseenter(descente3);});};function montee3(){$('#message_numero3').animate({height:'hide'},900);};
    $('#bouton4').mouseenter(descente4).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee4).toggle(function(){$(this).unbind('mouseleave',montee4);},function(){$(this).mouseleave(montee4);});function descente4(){$('#bouton4').unbind('mouseenter',descente4);$('#message_numero4').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton4').mouseenter(descente4);});};function montee4(){$('#message_numero4').animate({height:'hide'},900);};
    $('#bouton5').mouseenter(descente5).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee5).toggle(function(){$(this).unbind('mouseleave',montee5);},function(){$(this).mouseleave(montee5);});function descente5(){$('#bouton5').unbind('mouseenter',descente5);$('#message_numero5').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton5').mouseenter(descente5);});};function montee5(){$('#message_numero5').animate({height:'hide'},900);};
    $('#bouton6').mouseenter(descente6).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee6).toggle(function(){$(this).unbind('mouseleave',montee6);},function(){$(this).mouseleave(montee6);});function descente6(){$('#bouton6').unbind('mouseenter',descente6);$('#message_numero6').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton6').mouseenter(descente6);});};function montee6(){$('#message_numero6').animate({height:'hide'},900);};
    $('#bouton7').mouseenter(descente7).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee7).toggle(function(){$(this).unbind('mouseleave',montee7);},function(){$(this).mouseleave(montee7);});function descente7(){$('#bouton7').unbind('mouseenter',descente7);$('#message_numero7').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton7').mouseenter(descente7);});};function montee7(){$('#message_numero7').animate({height:'hide'},900);};
    $('#bouton8').mouseenter(descente8).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee8).toggle(function(){$(this).unbind('mouseleave',montee8);},function(){$(this).mouseleave(montee8);});function descente8(){$('#bouton8').unbind('mouseenter',descente8);$('#message_numero8').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton8').mouseenter(descente8);});};function montee8(){$('#message_numero8').animate({height:'hide'},900);};
    $('#bouton9').mouseenter(descente9).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee9).toggle(function(){$(this).unbind('mouseleave',montee9);},function(){$(this).mouseleave(montee9);});function descente9(){$('#bouton9').unbind('mouseenter',descente9);$('#message_numero9').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton9').mouseenter(descente9);});};function montee9(){$('#message_numero9').animate({height:'hide'},900);};
    $('#bouton10').mouseenter(descente10).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee10).toggle(function(){$(this).unbind('mouseleave',montee10);},function(){$(this).mouseleave(montee10);});function descente10(){$('#bouton10').unbind('mouseenter',descente10);$('#message_numero10').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton10').mouseenter(descente10);});};function montee10(){$('#message_numero10').animate({height:'hide'},900);};
     
     
    			// y = coordonnée verticale de la souris
    			document.onmousemove = function(e){
    				if(!e){
    					e = window.event;
    				}
    				y = e.clientY;
    			};
    			i=1; // Nombre d'affichages du tooltip
     
    			function tooltip() {
    				if (i==1) {
    					// $("#tooltip").css("left", -125).css("top", 3); // Ajustement y du tooltip à la coordonnéee verticale de l'image [+]
    					document.getElementById('tooltip').style.top=y-25+"px";// Ajustement y du tooltip à la coordonnéee verticale y de la souris (précédemment définie)
    					$("#tooltip").oneTime("1s", function() { // Si le survol de l'image est > à 5 sec-> le Tooltips apparait (oneTime -> http://plugins.jquery.com/project/timers)
    						$("#tooltip").fadeIn(2500).delay(2500).fadeOut(1000);
    						i++; // Pour empêcher que le tooltip s'affiche plus d'une fois
    					});
    				}
    			};	
    			function reset_tempo() {
    				$("#tooltip").stopTime(); // Arrêt de la tempo oneTime() si on quitte l'image (stopTime -> http://plugins.jquery.com/project/timers)
    				$("#tooltip").clearQueue();
    				$("#tooltip").fadeOut(1000);
    			};	
     
    		})
    	//]]>
    	</script>
     
    	</head>
    	<body bgcolor="#FFFFFF">
     
    	<div class="Container">
    		<!-- Appel procédure permettant d'afficher chaque bloc de lignes -->
    		<xsl:apply-templates select="enregistrements/auteur/ressource/regroupement" />
    	</div>
     
    	<!-- Image s'affichant 1 fois (quelques secondes) pour proposer de cliquer sur [+] si on le survole -->
    	<div><img id="tooltip" src="Audio/images/Cliquez ici.png"  alt="" /></div>
     
    	</body>
    	</html>
    </xsl:template>
     
    <xsl:template match="regroupement">
        <xsl:apply-templates select="ligne">
    		<!-- "plusCount" -> Comptage du nombre de "cousins" précédant la balise <plus> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <plus> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->
    		<xsl:with-param name="plusCount" select="count(preceding-sibling::*/*/plus)"/> 
    		<!-- "imageCount" -> Comptage du nombre de "cousins" précédant la balise <image> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <image> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->		
    		<xsl:with-param name="imageCount" select="count(preceding-sibling::*/*/image)"/> 
    	</xsl:apply-templates>
    	<div class="Espace" style="width:389px"></div> <!-- Le "+2" sert à prolonger l'effet d'ombré sur la droite -->
    </xsl:template>
     
     
    <xsl:template match="ligne">
    	<xsl:param name="plusCount"/>
    	<!-- Test si il y a une balise encastrée "<plus>" -->
    	<xsl:if test="plus">
    		<!-- Calcul du numéro d'apparition de la balise encastrée "<plus>" concernée 
    		( =f(nombre de cousins précédents + nombre de frères précédents) ) -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="bouton"><xsl:value-of select="concat('bouton', $compteur_de_lignes)" /></xsl:variable>
    		<img id="{$bouton}" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif"  alt=""/>
     
    	</xsl:if>
    	<xsl:if test="not(plus or image)"> <!-- Sinon... -->
    		<div class="Bouton_rien">
    		</div>
    	</xsl:if>
     
    	<!-- GESTION PARTIE TEXTE / LA BALISE <ligne> -->
     
    	<xsl:if test="(not(name(following-sibling::*[position()=1]) = 'extrait')) and (not(name(following-sibling::*[position()=1]) = 'surf'))">
    		<div class="Texte" style="width:367px">
    			<xsl:value-of select="text()"/> <!-- Affiche le contenu de la balise actuelle (<ligne>) sans afficher celui de sa balise enfant (<petit>) -->
    		    <xsl:apply-templates select="petit"/>
    		</div>
    	</xsl:if>	
     
     
     
    	<div class="Ombre_ligne_d"></div>
     
    	<xsl:if test="plus"> <!-- Balise encastrée "<plus>" ? -->
    		<!-- Numérotation / id "message_numero..." -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="message_numero"><xsl:value-of select="concat('message_numero', $compteur_de_lignes)" /></xsl:variable>
    		<xsl:variable name= "texte_style"><xsl:value-of select= "plus/@style"/></xsl:variable> <!-- Exemple: si @texte="fluo" -->
     
    		<xsl:variable name= "texte_recu"><xsl:value-of select= "plus/text()"/></xsl:variable>
    		<xsl:variable name= "info_complete"><xsl:value-of select="concat($texte_recu, '
    ')" /></xsl:variable>
    		<!-- Gestion / texte caché -->
     
    		<div id="{$message_numero}" class="Texte_caché" style="display:none; width:375px">
    			<span class="{$texte_style}"><xsl:value-of select="$info_complete"/></span> <!-- Affichage éventuel du texte caché -->
    			 <!-- Permet de faire un "retour chariot" pour afficher une ligne vide juste après le texte du xml -->
    		</div>
     
    	</xsl:if>	
     
    </xsl:template>
     
    </xsl:stylesheet>

  8. #8
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ah, heu oui, en fait ça reglais juste le pb des qui polluaient les balises "img".
    Pour l'histoire des balises non fermé, il semble que ce soit le fait de préciser
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:output method="html"
    Peut être qu'en html la balise "img "n'est jamais fermée.
    Si tu mets "xml" la balise est alors fermée.

  9. #9
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par souffle56 Voir le message
    Concernant le HTML4.01 strict, voilà ce qu'ils mettent :
    Si je me fie à tes arguments (qui, apparemment, tiennent la route), ce qu'ils disent serait obsolète, du fait que les navigateurs, en fait, n'ont pas suivi véritablement le standard XHTML 1, c'est bien cela
    Pas le moins du monde, et je ne vois pas ce qui te fait dire ça. Un document HTML ne peut pas être traité comme du XML, en effet. Et alors ? Quel rapport avec l'adoption ratée du XHTML par les navigateurs ?

    Citation Envoyé par souffle56 Voir le message
    -> A noter l'absence toujour manifeste du fameux "/" avant le ">" !
    *Aurais-je oublié quelque chose ?
    C'est normal. En HTML, la balise <img> est auto-fermante : ça n'aurait pas de sens de la fermer ailleurs que là où on l'ouvre. Fermer la balise est donc inutile.
    Et, en fait, mettre un / ailleurs qu'au début d'une balise fermante, est toujours invalide en HTML. Les navigateurs l'acceptent parce que quand ils lisent du XHTML, ils font comme si c'était du HTML, et ils ne veulent pas faire d'erreur quand un document XHTML l'utilise.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  10. #10
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Désolé thelvin,
    Je comprends ton incompréhension... Effectivement, je me suis plus qu'un peu "mélangé les pinceaux", par rapport à mes explications (la fatigue du moment ?...) En fait, ce sont ces 3 passages que j'aurais dû reprendre :
    HTML4.01 transitional

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
    "http://www.w3.org/TR/html4/loose.dtd">

    * le document est du HTML : il ne peut pas être traité comme du XML
    HTML4.01 strict

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
    "http://www.w3.org/TR/html4/strict.dtd">

    Comme en HTML4.01 transitional :

    * le document est du HTML : il ne peut pas être traité comme du XML
    XHTML1.0 transitional :

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
    "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

    Le document peut être traité comme du HTML (ce que vous allez faire en pratique) mais aussi comme du XML
    pour rendre compte de ce qui m'a paru, à tord, être un non-sens / l'utilisation d'un format XHTML; En effet, selon ces 3 extraits, j'en avais déduit un peu trop hâtivement que seul un document de type XHTML1.0 pourrait être traité également comme du XML... Alors que, ce qu'ils veulent dire (si j'ai bien compris depuis), c'est simplement que si un document est bien conforme XHTML, il pourra en conséquence être utilisé également comme base XML (du fait que les balises seront fermées...)
    Après, une des preuves qu'un document peut être XML sans être forcément XHTML, c'est un des critères propre au XHTML qui dit que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    toutes les balises et leurs attributs doivent être en minuscules
    Or, en xml, peu importe qu'un attribut soit en minuscules ou pas J'en conclus à présent que, effectivement, pas besoin forcément de validation XHTML pour être valide XML !
    En conséquence, pour mes fichiers XML, je vais opter pour un Doctype de type HTML4.0 strict qui, si il ne me garantit pas, bien sûr, d'être valide XML, me permet au moins d'être en adéquation avec la gestion "Doctype HTML 4.01" des navigateurs actuels et... m'autorise également plus de souplesse dans ma façon de coder XML/XSLT que le XHTML, sans nuire pour autant, du fait, au rendu observé sur les navigateurs ! A noter également que, si les validateurs internet tels que celui-ci http://validator.w3.org/ permettent de repérer facilement les "erreurs" / au Doctype HTML 4.01, concernant les tests que j'ai effectués sur fichiers XML/XSLT, ils ont vite fait d'indiquer toute une série d'erreurs pas forcément en adéquation avec la réalité si je leur demande un test XHTML 1.0! -> raison de plus, pour ce qui me concerne, de ne pas vouloir absolument être "valide XHTML 1.0" ! (Sans compter que, si j'ai bien compris cet article, d'ici quelques années, le standard XHTML 1.0 est appelé à disparaitre, alors, quel intérêt à être "valide XHTML 1.0" ? Et puis, en conséquence, si j'ai bien compris, les balises de type <balise/> devront être remplacées par <balise></balise> (pour une compatibilité HTML)... pff, franchement, ça y est, oui, mon choix est fait
    vive le HTML !

    Ps: Si quelqu'un a un avis différent ou... plus nuancé, merci de me le faire savoir, ça peut éventuellement m'intéresser, ne serait-ce que pour continuer à mieux me situer !

    Question subsidiaire: Suis-je assuré, si j'utilise un Doctype de type HTML 4.01 strict, d'avoir un code compatible avec les bases de la norme HTML 5 qui, d'ici quelques années, sera certainement utilisée par la plupart des navigateurs
    A noter un avis qui m'a semblé répondre à cette question:
    # Un document xHTML1.x valide le sera aussi en xHTML5;
    # Un document HTML4.x valide le sera aussi en HTML5;
    # Un document xHTML1.x valide ne le sera pas en xHTML2
    Voilà, sauf avis ou réaction particulière de quelqu'un à ce propos, peut-être puis-je considérer ce sujet comme résolu !

  11. #11
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par souffle56 Voir le message
    pour rendre compte de ce qui m'a paru, à tord, être un non-sens / l'utilisation d'un format XHTML; En effet, selon ces 3 extraits, j'en avais déduit un peu trop hâtivement que seul un document de type XHTML1.0 pourrait être traité également comme du XML... Alors que, ce qu'ils veulent dire (si j'ai bien compris depuis), c'est simplement que si un document est bien conforme XHTML, il pourra en conséquence être utilisé également comme base XML (du fait que les balises seront fermées...)
    Oui tu m'as l'air de t'embrouiller bien plus que ça.
    Précisons une chose : XML n'est pas à proprement parler un format : c'est un ensemble de règles qui servent à créer des formats. Exemples de formats créés avec XML :
    - SVG
    - RSS
    - Atom
    - Docbook
    - XHTML

    Un document XHTML est aussi un document XML. Parce que XHTML est un langage basé sur XML. C'est de là que vient le 'X' : XHTML, c'est HTML remodelé pour être basé sur XML.

    Or, en xml, peu importe qu'un attribut soit en minuscules ou pas
    C'est le contraire : en XML les majuscules et minuscules sont différenciées. En HTML, par contre, non. Mais vu que XHTML est basé sur XML, il doit respecter ses règles, et donc, là, les éléments doivent être en minuscule, chose qui n'avait pas d'importance avec le HTML.

    J'en conclus à présent que, effectivement, pas besoin forcément de validation XHTML pour être valide XML !
    Euh, oui mais, c'est normal puisqu'un document XML n'est pas forcément XHTML. En résumé, tu raisonnes en sens inverse. C'est facile d'être valide XML, mais ce n'est pas ce qui t'intéresse.

    En conséquence, pour mes fichiers XML, je vais opter pour un Doctype de type HTML4.0 strict qui, si il ne me garantit pas, bien sûr, d'être valide XML,
    En fait, un doctype HTML 4.01 strict te garantit (presque) de ne pas être valide XML. Mais tu t'en fous : ça ne sert à rien d'être valide XML pour faire du HTML envoyé au navigateur. En fait ça crée des problèmes.

    Le fait est que le HTML est plus souple... Mais pas beaucoup, là n'est pas son intérêt. Non, ce qu'il y a c'est qu'essayer de faire du XML et du HTML en même temps, les navigateurs n'ont pas vraiment accroché, et en général on fait surtout n'importe quoi. Accessoirement, si c'est pour envoyer au navigateur, ça ne sert à rien de vouloir absolument du XML. De toute façon ils le traiteront comme si c'en était pas.

    Question subsidiaire: Suis-je assuré, si j'utilise un Doctype de type HTML 4.01 strict, d'avoir un code compatible avec les bases de la norme HTML 5 qui, d'ici quelques années, sera certainement utilisée par la plupart des navigateurs
    C'est un des buts de HTML 5, normalement : tout ce qui était conforme avant, reste conforme avec HTML 5. En pratique il y a quelques entorses à cette règle, ici et là, mais il y a peu de chances de tomber dedans... Et puis, c'est le mieux qu'on puisse faire.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    thelvin,
    Tout d'abord, Merci beaucoup pour la pertinence de tes propos, au début de ce sujet !

    Après, je reste 100% favorable à prendre en compte l'avis et les réflexions que l'on peut me faire, dans la mesure où les propos me paraissent réalistes, positifs et... constructifs ! Ceci dit, "positif", ce n'est pas l'impression qui se dégage de ton avis, quand tu dis: "tu m'as l'air de t'embrouiller bien plus que ça."... Je ne vois pas non plus ce que ce genre de réflexion peut avoir de constructif ! Et, honnêtement, je trouve même que c'est un peu hors sujet... tu ne trouves pas ?

    En outre, quand tu dis, juste après: "Précisons une chose : XML n'est pas à proprement parler un format"... Euh oui, je veux bien, mais, je ne sais pas si tu as remarqué, je n'ai pas dis une seule fois que XML était un format particulier -> Que vient faire là cette réflexion ?

    Sinon, quand tu reprends mes propos:
    Or, en xml, peu importe qu'un attribut soit en minuscules ou pas
    et que tu réponds:
    C'est le contraire : en XML les majuscules et minuscules sont différenciées.
    -> je n'ai pas dit que les majuscules et minuscules n'étaient pas différenciées en XML, j'ai seulement voulu dire que, en XML (à la différence du XHTML), on peut écrire un attribut en mettant des majuscules, des minuscules, ou les 2 -> du style:
    <balise>Réflexion= "Positive"</balise>
    Tout ça pour dire qu'il y a certaines polémiques qui pourraient certainement être évitées si on essayait davantage de comprendre ce qui a pû amener une personne à telle ou telle déduction, plutôt que d'entrer dans une forme de confrontation directe que, personnellement, je considère comme souvent vaine et inutile! Tu ne crois pas ?

    Sinon, entre autre, je retiens quand même ta réflexion, quand tu dis:
    En fait, un doctype HTML 4.01 strict te garantit (presque) de ne pas être valide XML. Mais tu t'en fous : ça ne sert à rien d'être valide XML pour faire du HTML envoyé au navigateur. En fait ça crée des problèmes...
    Accessoirement, si c'est pour envoyer au navigateur, ça ne sert à rien de vouloir absolument du XML. De toute façon ils le traiteront comme si c'en était pas.
    -> Là, voilà une réflexion qui me semble réaliste, positive et constructive... et qui va m'éviter de me casser la tête pour rien... (D'où le vote >0 que j'ai mis, là aussi !)

    Pareil pour
    C'est un des buts de HTML 5, normalement : tout ce qui était conforme avant, reste conforme avec HTML 5. En pratique il y a quelques entorses à cette règle, ici et là, mais il y a peu de chances de tomber dedans...
    Merci à toi !

  13. #13
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Voila article que je trouve intéressant et nuancé montrant les avantages/désavatages du xhtml :
    http://www.webdevout.net/articles/beware-of-xhtml

    Jusqu'à présent j'ai toujours fait du rendu sur du html ou du html "bien formé" du point de vue xml. Mais je ne fait du web que accessoirement pour le moment .

  14. #14
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Euh thelvin,
    Je viens de faire quelques essais, à l'aide de ce validateur sur le code précédemment èvoqué (avec un Doctype HTML 4.01 transitionnel):
    Citation Envoyé par souffle56 Voir le message
    Bon ben, apparemment, y a un mystère qui m'échappe d'autant plus... que je viens de refaire les essais, en reprenant texto le même code XSLT que celui précisé ci-dessus (en passant juste le doctype en HTML 4.0 et en retirant le namespace -> voir code ci-dessous)..., ajusté au même fichier XML, via le même pgm PHP que celui ci-dessus et... voilà un extrait du code source (Idem sous Firefox 3.6.3, IE7 et IE8):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="bouton1" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif" alt="">
    -> A noter l'absence toujour manifeste du fameux "/" avant le ">" !
    *Aurais-je oublié quelque chose ?
    * Morbo, Ca a l'air de mieux se présenter, de ton coté -> Es-tu passé par le même code PHP (précisé un peu plus haut) pour faire tes essais ? ou as-tu eu une autre approche plus "inspirée" pour ajuster la XSLT à la XML ?
    * As tu utilisé le même code XSLT que celui ci-dessous ?
    Merci si tu peux me préciser !

    Ps: Le code XSLT (après réajustements):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
     
    <xsl:template match="/">
    	<html>
    	<head>
    	<title>Audio</title>
     
    	<link type="text/css" rel="stylesheet" href="Audio/Audio_css.css" />
     
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-1.4.2.min.js"></script>
    	<script type="text/javascript" src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery-ui-1.8.1.custom.min.js"></script>
    	<script type='text/javascript' src="http://souffle56.fr/Site/1-Trouver_les_ressources/Ressources/js/jquery.timers.js"></script>
    	<script type='text/javascript'>
    	//<![CDATA[
    		$(function(){
     
    			// Paramétrage / CSS -> conformité / W3C (Via jQuery)
    			$(".Container").css("width", 400);
     
     
    			// Ouverture, blocage ou fermeture / fenêtre cachée, via survol ou click sur [+]
    			// (Effets sympas: 'easeInOutCirc', 'easeInOutQuart', 'easeInOutQuint' ou 'easeInOutCubic')
    			$('#bouton1')
    				.mouseenter(descente1)
    				.mouseenter(tooltip)
    				.mouseleave(reset_tempo)
    				.mouseleave(montee1)
    				.toggle( // Si click -> (dé)blocage / disparition / texte caché...
    					function(){
    						$(this).unbind('mouseleave',montee1); 
    					},
    					function(){
    						$(this).mouseleave(montee1);
    					}
    				);
    			function descente1() {
    				$('#bouton1')
    					.unbind('mouseenter',descente1); // Blocage anti-rebonds (si survol répété de l'image)
    				$('#message_numero1').animate({
    					height:'show'
    					},900,'easeInOutCirc',function(){$('#bouton1').mouseenter(descente1);}); // Annulation / Blocage anti-rebonds
    			};
    			function montee1() {
    				$('#message_numero1').animate({
    					height:'hide'
    					},900);
    			};
     
    $('#bouton2').mouseenter(descente2).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee2).toggle(function(){$(this).unbind('mouseleave',montee2);},function(){$(this).mouseleave(montee2);});function descente2(){$('#bouton2').unbind('mouseenter',descente2);$('#message_numero2').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton2').mouseenter(descente2);});};function montee2(){$('#message_numero2').animate({height:'hide'},900);};
    $('#bouton3').mouseenter(descente3).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee3).toggle(function(){$(this).unbind('mouseleave',montee3);},function(){$(this).mouseleave(montee3);});function descente3(){$('#bouton3').unbind('mouseenter',descente3);$('#message_numero3').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton3').mouseenter(descente3);});};function montee3(){$('#message_numero3').animate({height:'hide'},900);};
    $('#bouton4').mouseenter(descente4).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee4).toggle(function(){$(this).unbind('mouseleave',montee4);},function(){$(this).mouseleave(montee4);});function descente4(){$('#bouton4').unbind('mouseenter',descente4);$('#message_numero4').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton4').mouseenter(descente4);});};function montee4(){$('#message_numero4').animate({height:'hide'},900);};
    $('#bouton5').mouseenter(descente5).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee5).toggle(function(){$(this).unbind('mouseleave',montee5);},function(){$(this).mouseleave(montee5);});function descente5(){$('#bouton5').unbind('mouseenter',descente5);$('#message_numero5').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton5').mouseenter(descente5);});};function montee5(){$('#message_numero5').animate({height:'hide'},900);};
    $('#bouton6').mouseenter(descente6).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee6).toggle(function(){$(this).unbind('mouseleave',montee6);},function(){$(this).mouseleave(montee6);});function descente6(){$('#bouton6').unbind('mouseenter',descente6);$('#message_numero6').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton6').mouseenter(descente6);});};function montee6(){$('#message_numero6').animate({height:'hide'},900);};
    $('#bouton7').mouseenter(descente7).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee7).toggle(function(){$(this).unbind('mouseleave',montee7);},function(){$(this).mouseleave(montee7);});function descente7(){$('#bouton7').unbind('mouseenter',descente7);$('#message_numero7').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton7').mouseenter(descente7);});};function montee7(){$('#message_numero7').animate({height:'hide'},900);};
    $('#bouton8').mouseenter(descente8).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee8).toggle(function(){$(this).unbind('mouseleave',montee8);},function(){$(this).mouseleave(montee8);});function descente8(){$('#bouton8').unbind('mouseenter',descente8);$('#message_numero8').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton8').mouseenter(descente8);});};function montee8(){$('#message_numero8').animate({height:'hide'},900);};
    $('#bouton9').mouseenter(descente9).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee9).toggle(function(){$(this).unbind('mouseleave',montee9);},function(){$(this).mouseleave(montee9);});function descente9(){$('#bouton9').unbind('mouseenter',descente9);$('#message_numero9').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton9').mouseenter(descente9);});};function montee9(){$('#message_numero9').animate({height:'hide'},900);};
    $('#bouton10').mouseenter(descente10).mouseenter(tooltip).mouseleave(reset_tempo).mouseleave(montee10).toggle(function(){$(this).unbind('mouseleave',montee10);},function(){$(this).mouseleave(montee10);});function descente10(){$('#bouton10').unbind('mouseenter',descente10);$('#message_numero10').animate({height:'show'},900,'easeInOutCirc',function(){$('#bouton10').mouseenter(descente10);});};function montee10(){$('#message_numero10').animate({height:'hide'},900);};
     
     
    			// y = coordonnée verticale de la souris
    			document.onmousemove = function(e){
    				if(!e){
    					e = window.event;
    				}
    				y = e.clientY;
    			};
    			i=1; // Nombre d'affichages du tooltip
     
    			function tooltip() {
    				if (i==1) {
    					// $("#tooltip").css("left", -125).css("top", 3); // Ajustement y du tooltip à la coordonnéee verticale de l'image [+]
    					document.getElementById('tooltip').style.top=y-25+"px";// Ajustement y du tooltip à la coordonnéee verticale y de la souris (précédemment définie)
    					$("#tooltip").oneTime("1s", function() { // Si le survol de l'image est > à 5 sec-> le Tooltips apparait (oneTime -> http://plugins.jquery.com/project/timers)
    						$("#tooltip").fadeIn(2500).delay(2500).fadeOut(1000);
    						i++; // Pour empêcher que le tooltip s'affiche plus d'une fois
    					});
    				}
    			};	
    			function reset_tempo() {
    				$("#tooltip").stopTime(); // Arrêt de la tempo oneTime() si on quitte l'image (stopTime -> http://plugins.jquery.com/project/timers)
    				$("#tooltip").clearQueue();
    				$("#tooltip").fadeOut(1000);
    			};	
     
    		})
    	//]]>
    	</script>
     
    	</head>
    	<body bgcolor="#FFFFFF">
     
    	<div class="Container">
    		<!-- Appel procédure permettant d'afficher chaque bloc de lignes -->
    		<xsl:apply-templates select="enregistrements/auteur/ressource/regroupement" />
    	</div>
     
    	<!-- Image s'affichant 1 fois (quelques secondes) pour proposer de cliquer sur [+] si on le survole -->
    	<div><img id="tooltip" src="Audio/images/Cliquez ici.png"  alt="" /></div>
     
    	</body>
    	</html>
    </xsl:template>
     
    <xsl:template match="regroupement">
        <xsl:apply-templates select="ligne">
    		<!-- "plusCount" -> Comptage du nombre de "cousins" précédant la balise <plus> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <plus> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->
    		<xsl:with-param name="plusCount" select="count(preceding-sibling::*/*/plus)"/> 
    		<!-- "imageCount" -> Comptage du nombre de "cousins" précédant la balise <image> à partir de la balise courante <regroupement> 
    		pour l'ajouter ensuite au nombre de "frères" précédant chaque balise <image> concernée 
    		afin de gérer,via les fonctions JQUERY situées dans le <Head> (et le paramétrage des id "message_numero...") 
    		l'affichage des boutons [+] (et du contenu caché correspondant) selon leur ordre d'apparition : -->		
    		<xsl:with-param name="imageCount" select="count(preceding-sibling::*/*/image)"/> 
    	</xsl:apply-templates>
    	<div class="Espace" style="width:389px"></div> <!-- Le "+2" sert à prolonger l'effet d'ombré sur la droite -->
    </xsl:template>
     
     
    <xsl:template match="ligne">
    	<xsl:param name="plusCount"/>
    	<!-- Test si il y a une balise encastrée "<plus>" -->
    	<xsl:if test="plus">
    		<!-- Calcul du numéro d'apparition de la balise encastrée "<plus>" concernée 
    		( =f(nombre de cousins précédents + nombre de frères précédents) ) -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="bouton"><xsl:value-of select="concat('bouton', $compteur_de_lignes)" /></xsl:variable>
    		<img id="{$bouton}" class="Bouton_plus" src="Audio/images/Plus_mini_2.gif"  alt=""/>
     
    	</xsl:if>
    	<xsl:if test="not(plus or image)"> <!-- Sinon... -->
    		<div class="Bouton_rien">
    		</div>
    	</xsl:if>
     
    	<!-- GESTION PARTIE TEXTE / LA BALISE <ligne> -->
     
    	<xsl:if test="(not(name(following-sibling::*[position()=1]) = 'extrait')) and (not(name(following-sibling::*[position()=1]) = 'surf'))">
    		<div class="Texte" style="width:367px">
    			<xsl:value-of select="text()"/> <!-- Affiche le contenu de la balise actuelle (<ligne>) sans afficher celui de sa balise enfant (<petit>) -->
    		    <xsl:apply-templates select="petit"/>
    		</div>
    	</xsl:if>	
     
     
     
    	<div class="Ombre_ligne_d"></div>
     
    	<xsl:if test="plus"> <!-- Balise encastrée "<plus>" ? -->
    		<!-- Numérotation / id "message_numero..." -->
    		<xsl:variable name="compteur_de_lignes"><xsl:value-of select="$plusCount+count(preceding-sibling::*/plus)+1" /></xsl:variable>
    		<xsl:variable name="message_numero"><xsl:value-of select="concat('message_numero', $compteur_de_lignes)" /></xsl:variable>
    		<xsl:variable name= "texte_style"><xsl:value-of select= "plus/@style"/></xsl:variable> <!-- Exemple: si @texte="fluo" -->
     
    		<xsl:variable name= "texte_recu"><xsl:value-of select= "plus/text()"/></xsl:variable>
    		<xsl:variable name= "info_complete"><xsl:value-of select="concat($texte_recu, '
    ')" /></xsl:variable>
    		<!-- Gestion / texte caché -->
     
    		<div id="{$message_numero}" class="Texte_caché" style="display:none; width:375px">
    			<span class="{$texte_style}"><xsl:value-of select="$info_complete"/></span> <!-- Affichage éventuel du texte caché -->
    			 <!-- Permet de faire un "retour chariot" pour afficher une ligne vide juste après le texte du xml -->
    		</div>
     
    	</xsl:if>	
     
    </xsl:template>
     
    </xsl:stylesheet>
    -> avec, entre autre, la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="tooltip" src="Audio/images/Cliquez ici.png"  alt="" />
    qui comporte un "/" à la fin -> Pourtant, au final, sur le navigateur, le "/" a disparu et, selon le validateur évoqué, le code obtenu est bien conforme "HTML 4.01 Transitional" -> jusque là, rien a redire, c'est simplement dû au fait que le navigateur a retiré lui-même le "/" !
    Seulement, si je retire moi-même le "/":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <img id="tooltip" src="Audio/images/Cliquez ici.png"  alt="">
    comme tu me l'as suggéré quand tu dis:
    En HTML, la balise <img> est auto-fermante : ça n'aurait pas de sens de la fermer ailleurs que là où on l'ouvre. Fermer la balise est donc inutile.
    Et, en fait, mettre un / ailleurs qu'au début d'une balise fermante, est toujours invalide en HTML.
    -> Alors là, le validateur affiche toute une série d'erreurs, du fait que le navigateur lui-même n'affiche plus la page comme auparavant mais... toute une série d'erreurs également !
    -> Le seul remède que j'ai trouvé, c'est de remettre le fameux "/" et là, ça fonctionne !
    Autrement dit, je dois m'y prendre à l'inverse de ce que tu m'as proposé précédemment si je veux que ça fonctionne correctement, à moins qu'il y aurait une alternative qui, je l'avoue, m'échappe complètement pour l'instant Qu'en penses-tu

  15. #15
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Merci Morbo pour ta proposition,
    Le titre de la page web résume bien, je trouve, l'atmosphère et la situation du moment, en ce qui me concerne, vis à vis du Xhtml: "Beware of XHTML !"
    Bonne continuation à toi et... Bon week-end !

  16. #16
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Citation Envoyé par souffle56 Voir le message
    Euh thelvin,
    Je viens de faire quelques essais, à l'aide de ce validateur sur le code précédemment èvoqué (avec un Doctype HTML 4.01 transitionnel):

    [...]

    Autrement dit, je dois m'y prendre à l'inverse de ce que tu m'as proposé précédemment Qu'en penses-tu
    J'en pense pas mal de choses :
    - D'abord, je suis un habitué de ce validateur (c'est le validateur officiel après tout,) et par acquis de conscience j'ai revérifié :
    -- En HTML 4.01 strict ou transitionnel, ne pas mettre de / à la fin de <img> est parfaitement valide, fiable, la bonne manière de faire, il ne fait pas la moindre petite remarque à ce propos, tout est clean.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
       <head>
       <title>Test de /</title>
       </head>
       <body>
          <p>Bonjour ! <img src="http://thelvin.free.fr/nonexistant.fr" alt="No image">
       </body>
    </html>
    -- Toujours en HTML 4.01 strict ou transitionnel, mettre un / à la fin de <img> provoque un warning grave qui, si on lit attentivement les contraintes de compatibilité des spécifications de HTML 4.01, devrait être en réalité une erreur de validation. En pratique ça n'a pas d'importance, en théorie c'est invalide. Voilà.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"
            "http://www.w3.org/TR/html4/loose.dtd">
    <html>
       <head>
       <title>Test de /</title>
       </head>
       <body>
          <p>Bonjour ! <img src="http://thelvin.free.fr/nonexistant.fr" alt="No image" />
       </body>
    </html>
    J'ai vérifié, les résultats qu'on obtient, c'est ça. Je ne sais pas comment tu peux obtenir autre chose.

    - Ensuite, il faut se rappeler que ce validateur valide en fonction du doctype annoncé. Je ne sais pas quel est le doctype du document que tu as validé. Je suggère de vérifier.

    - Après, je ne sais pas avec quoi tu fais ta transformation XSLT, et je n'ai pas accès au code source complet généré (un exemple court suffit.) Je ne peux donc pas reproduire tes expériences, donc pas rechercher d'explication.

    - Enfin, je ne sais même pas quelle est cette pléthore d'erreurs que tu obtiens, alors je ne vois pas trop ce que je peux en penser. Je sais en tout cas que quand on essaie de valider du HTML qui ne ferme pas ses balises comme du XHTML, ça fait plein d'erreurs et c'est normal. Je suppose donc qu'il se passe quelque chose comme ça.

    [...] ! Ceci dit, "positif", ce n'est pas l'impression qui se dégage de ton avis, quand tu dis: "tu m'as l'air de t'embrouiller bien plus que ça."... Je ne vois pas non plus ce que ce genre de réflexion peut avoir de constructif ! Et, honnêtement, je trouve même que c'est un peu hors sujet... tu ne trouves pas ?
    Non. Par contre, en parler est hors-sujet, oui. Et je précise que quand quelqu'un fait une erreur, en faire la remarque passe difficilement pour positif. J'ai tout de même essayé d'expliquer en quoi, bon sang, on est pas censé me demander plus que ça !
    C'est une simple question d'expliquer les choses par étapes. Quand quelqu'un a complètement inversé les choses, si on commence par lui dire en quoi il l'a fait, il ne va pas comprendre où on veut en venir ni ce qu'on lui raconte. Une remarque du genre "non mais c'est pas ça du tout, il faut que tu repartes du début." ne marche pas souvent, mais donne une chance au lecteur de comprendre qu'on va maintenant lui expliquer en quoi il se trompait.

    En outre, quand tu dis, juste après: "Précisons une chose : XML n'est pas à proprement parler un format"... Euh oui, je veux bien, mais, je ne sais pas si tu as remarqué, je n'ai pas dis une seule fois que XML était un format particulier -> Que vient faire là cette réflexion ?
    Elle fait partie de l'explication sur les relations entre HTML, XML et XHTML, que tu ne comprenais manifestement pas. Tu n'as peut-être rien dit mais il était clair que tu avais des idées fausses. Ce serait bien si tu pouvais juste te concentrer sur les explications et demander si elles sont pas claires, pas pourquoi elles sont là.

    -> je n'ai pas dit que les majuscules et minuscules n'étaient pas différenciées en XML, [...]

    Tout ça pour dire qu'il y a certaines polémiques qui pourraient certainement être évitées si on essayait davantage de comprendre ce qui a pû amener une personne à telle ou telle déduction, plutôt que d'entrer dans une forme de confrontation directe que, personnellement, je considère comme souvent vaine et inutile! Tu ne crois pas ?
    J'ai cru que c'était une erreur de plus de ta part, c'est tout de même pas aller en confrontation ? Et puis zut à la fin, c'était légitime de le croire. Je fais des efforts pour comprendre ton cheminement de pensée, t'inquiète pas pour ça. Ça ne marche pas toujours.


    Enfin bref, 'ya pas de quoi.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  17. #17
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bonjour thelvin,
    Tout d'abord, Grand Merci pour le temps que tu daignes prendre pour aborder ce sujet avec moi !
    Sinon, excuse-moi pour mes réactions pas toujours ajustées, du moins dans l'expression et la formulation !
    Après, pour faire écho à ta réflexion et essayer d'y voir plus clair, j'ai simplifié les bases de mon code pour faire un test dont la page principale (qui se trouve ici) contient le code suivant:

    Code php:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <?php
       $xslDoc = new DOMDocument();
       $xslDoc->load("Test_doctype.xsl");
     
       $xmlDoc = new DOMDocument();
       $xmlDoc->load("ENREGISTREMENTS_XML_ESSAI.xml");
     
       $proc = new XSLTProcessor();
       $proc->importStylesheet($xslDoc);
       echo $proc->transformToXML($xmlDoc);
    ?>
    Ce code appelle le fichier suivant :

    Fichier XML:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <?xml version="1.0" encoding="UTF-8"?>
     
    <enregistrements>	
    	<auteur>
    		<ressource titre="Un titre super important">
    			<regroupement sous_titre="Titre du regroupement">
    				<ligne>Mon 1er texte
    					<plus>Bonjour !</plus>
    				</ligne>
    			</regroupement>
    		</ressource>
    	</auteur>	
    </enregistrements>
    pour le parser à l'aide du code XSLT suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="html" 
    encoding="utf-8" 
    doctype-public="-//W3C//DTD HTML 4.01 Transitional//EN" 
    doctype-system="http://www.w3.org/TR/html4/loose.dtd"/>
     
    <xsl:template match="/">
    	<html>
    	<head>
    	<title>Test de /</title>
     
    	</head>
    	<body>
    	<p>Bonjour ! <img src="http://thelvin.free.fr/nonexistant.fr" alt="No image"/></p>
    	</body>
    	</html>
    </xsl:template>
     
    </xsl:stylesheet>
    Avec ce code, si on utilise le validateur officiel, voilà ce qu'il affiche: "This document was successfully checked as HTML 4.01 Transitional!" Par contre, si je retire le fameux "/" évoqué de la fin de la balise <img>, là, il ne prend plus
    Y aurait-il quelque chose à revoir dans mon code ou dans mon approche pour parser le fichier XML ? Qu'en penses-tu ? Comment t'y prendrais-tu toi-même

    Ps: Sinon, ça n'est qu'une parenthèse, mais quand tu dis:
    Une remarque du genre "non mais c'est pas ça du tout, il faut que tu repartes du début." ne marche pas souvent, mais donne une chance au lecteur de comprendre qu'on va maintenant lui expliquer en quoi il se trompait.
    -> Oui, peut-être, c'est possible que ce genre d'approche fonctionne bien avec certains tempéraments, du style "personnes qui apprécient de se voir corrigées, qui ne prendront pas non plus ce genre de réflexion comme une attaque ou une atteinte personnelle et aussi, que ça ne gêne pas de repartir à "zéro" " ! Est-ce le cas pour la majorité d'entre nous ? et pour nous-mêmes ? Je te laisse te faire ton avis !

    A ce propos, il y aurait bien une alternative, issue de la CNV ( la Communication Non Violente) l'approche "Plus moins plus" (approche en 3 temps) -> Commencer par un encouragement (sincère, si possible), dire ce qui ne va pas (avec une certaine "positivité") et terminer par quelque chose d'encourageant également... Ca peut aider à "faire passer la pilule" !

    Après, je reconnais que faire passer un message, ça s'apprend... et que sur ce thème, on n'a jamais fini d'apprendre ! A ce propos, j'ai beau avoir été formateur du personnel, il y a une vingtaine d'années, eh bien, aujourd'hui encore, j'ai l'impression de me mettre à l'école, coté communication !

  18. #18
    Membre régulier
    Profil pro
    Inscrit en
    Août 2009
    Messages
    186
    Détails du profil
    Informations personnelles :
    Âge : 59
    Localisation : France

    Informations forums :
    Inscription : Août 2009
    Messages : 186
    Points : 80
    Points
    80
    Par défaut
    Bon, je crois que je peux considérer ce sujet comme résolu, d'autant plus que mes questions de départ ont vraiment trouvé une réponse en conséquence... Après pour ce qui est de mes questionnements du moment, vu que le sujet traité est différent, je vais voir cela en créant un sujet spécifique: "Parsage XML via XSLT, comment être valide W3C ?"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 4
    Dernier message: 18/09/2009, 10h59
  2. Réponses: 2
    Dernier message: 20/08/2007, 14h08
  3. Réponses: 1
    Dernier message: 03/08/2007, 13h25
  4. [XSLT] Erreur parsing XSLT sur du javascript
    Par michaelbob dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 14/08/2006, 12h11
  5. Tester son code sur divers navigateurs
    Par benassis dans le forum Général Conception Web
    Réponses: 9
    Dernier message: 22/03/2006, 13h12

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo