[XML / XSL] XHTML -> XHTML

HTML5, CSS3, Javascript, support des mobiles... Que penser de votre site ? Vous manquez d'informations pour la construction d'un site qui puisse s'afficher correctement partout ? C'est un problème simple, un peu complexe ? Venez ici !
Répondre
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

[XML / XSL] XHTML -> XHTML

Message par Blustuff »

Bonsoir,

Je cherche une série de méthodes pour arriver à créer un contenu dynamique, et le XML/XSL semble ête un moyen d'y parvenir.

Mon document de départ est un contenu plus ou moins mixte, de balises Xhtml, auxquelles on a rajouté des balises et des attributs qui peuvent avoir des signification très diverses, comme par exemple avoir un sens dans la génération de code dynamique via Javascript.

Ici pour donner un exemple, j'ai crée une page de citations. Cette page contient des éléments html et une balise <quote> supplémentaire. Les éléments HTML ne devront pas bouger par la transformation XSL, mais la balise quote en revanche, devra être modifiée.

quote.xml

Code : Tout sélectionner

<?xml version="1.0" encoding="ISO-8859-1"?>
<?xml-stylesheet type="text/xsl" href="quote.xsl"?>

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
  <title>Citations</title>
  <meta http-equiv="content-type" content="text/html; charset=iso-8859-1"/>
  <link rel="stylesheet" type="text/css" href="quote.css"/>
</head>
<body>
  <h1>Citations</h1>
  <p>Voici quelques citations : </p>
  <quote author="Jacques Prévert">Il n'y a pas de problème, il n'y a que des professeurs.</quote>
  <quote author="Arthur Rimbaud">La vision de la justice est le plaisir de Dieu seul.</quote>
  <quote author="Charles Baudelaire">Ombres folles, courez au bout de vos desirs Jamais vous ne pourrez assouvir votre rage.</quote>
</body>
</html>
quote.xsl

Code : Tout sélectionner

<?xml version="1.0" encoding="iso-8859-1"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xhtml="http://www.w3.org/1999/xhtml">

<xsl:template match="xhtml:*">
  <xsl:copy>
    <xsl:copy-of select="@*" />
    <xsl:apply-templates />
  </xsl:copy>
</xsl:template>

<xsl:template match="xhtml:quote">
  <xhtml:div>
    <xhtml:b><xsl:value-of select="@author" /> : </xhtml:b>
    <xhtml:div class="citation">"<xsl:value-of select="." />"</xhtml:div>
  </xhtml:div>
</xsl:template> 
 
</xsl:stylesheet>
Aperçu : http://pagesperso.laposte.net/academie/quote.xml

Je pense que l'objet est assez clair.

Le problème est qu'ici, la page s'affiche correctement pour Firefox, mais pas pour IE. En réalité, je n'en suis pas à mon premier essai. Un utilisateur d'un autre forum a apporté cette solution de préfixer les balises xhtml du document xsl par l'espace de nommage xhtml, qui était la condition nécessaire pour que la page s'affiche correctement.

Après, quelques tests, il apparait clair que pour Firefox il faut l'une ou l'autre des solutions :
  • la balise html du document xml soit sans espace de nommage
  • si un espace de nommage est spécifié, alors il faut ajouter le préfixe aux balises dans le document xsl.
Pour Internet Explorer en revanche, le seul resultat correct, s'obtient en oubliant totalement la balise html, et en la remplacant par une balise arbitraire pour englober le document. Dans ce cas alors, la solution ne fonctionne pas pour Firefox.

Je cherche donc une solution qui marche au moins sur ces deux navigateurs, plus si affinités. J'aurais au maximum voulu conserver cette balise html, mais je peux conçevoir qu'il faille s'en passer.


Blustuff.
Invité

Message par Invité »

si tu rajoutes dans ton fichier xsl : <xsl:output method="html" /> ou method="xml". est-ce que ça va pas mieux ?

Je suis pas sur mais je pense que IE ne supporte pas encore le xhtml
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

Message par Blustuff »

J'ai déjà essayé en rajoutant output, ca marche pas mieux.
Martius
Arias
Messages : 3
Inscription : 30 avr. 2005, 13:35

Message par Martius »

Ie supporte mal le XML à cause du type mime text/xml
Martius
Image
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

J'ai lu plusieurs fois qu'il fallait préférer application/xml (mais je ne sais pas trop pourquoi).
Bobe
Iguane
Messages : 742
Inscription : 28 juil. 2003, 21:29

Message par Bobe »

Parce que les fichiers de type text/* passés via le protocole http et n'ayant pas d'indication de charset dans les en-têtes ont sensément le charset us-ascii par défaut, ce qui n'est pas compatible avec la norme XML (UTF-8 ou 16 par défaut pour les fichiers au format XML).

Voir:
http://sebastienguillon.com/traduction/ ... l#text-xml

(Que j'ai sorti il n'y a pas longtemps du tout, n'est-ce pas Calimo... :P )
« La vie d’un geek est un combat perpétuel contre l’imperfection »
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

Message par Blustuff »

Mais moi j'ai donné le charset iso :/
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Oui mais pas ton serveur... tu as accès aux htaccess sur laposte ?

Si tu veux mon avis :
  1. Comme IE ne connait pas le XHTML, il ne peut pas connaître <xhtml:div> et <xhtml:b> donc il ne sait pas les afficher. Tu dois le lui dire :

    Code : Tout sélectionner

    div {display:block;}
    b {font-weight:bold;}
    :wink:
  2. Tu ferais mieux à mon avis de mettre

    Code : Tout sélectionner

    <quote><author>Jacques Prévert</author>Il n'y a pas de problème, il n'y a que des professeurs.</quote>
    En effet, on préfère réserver aux valeurs d'attributs les choses qu'on affiche pas (regarde en HTML, il n'y a guère que le alt des img qui n'est pas affiché), et ce qui doit être affiché par un outil ne connaissant pas la balise (c'est le cas ici) est à mettre directement en contenu... je ne sais pas si je suis clair :lol:
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

Message par Blustuff »

2. Je ne suis pas d'accord. Moi j'ai choisi de l'afficher, mais un autre xsl pourra choisir de le mettre en title=""
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Oui, mais sans XSL du tout c'est mieux que ça s'affiche :wink:
(d'ailleurs ça n'empêche pas du tout de le mettre en title, pourquoi dis-tu ça ? :shock: )
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

Message par Blustuff »

Sans xsl du tout, ca s'affiche ?? Les navigateurs affichent le xml comme ils veulent, rien ne les empêche de le faire.

Si je parle de title, c'est que vous prenez comme exemple l'html : Dans le cas de l'html on peut mettre des choses dans title qui s'afficheront dans une infobulle. Réutilisez votre comparaison pour voir qu'alors, elle ne constitue plus un argument pour ne pas utiliser d'attribut.

De plus, quand j'écris mon xml, je ne sais pas encore ce qu'il sera fait du nom de l'auteur. Sera t-il utilisé uniquement pour le tri ? Sera t-il affiché ? Sera t-il dans une infobulle ?
calimo
Animal mythique
Messages : 14118
Inscription : 26 déc. 2003, 11:51

Message par calimo »

Blustuff a écrit :Sans xsl du tout, ca s'affiche ?? Les navigateurs affichent le xml comme ils veulent, rien ne les empêche de le faire.
Oui, mais un outil "quelconque" parsant le XML de cette page sans faire de transformation ni rien du tout, juste en parsant, verra comme contenu la citation, mais retirera les balises/attributs.

Il faut t'imaginer ce qui se passe en HTML : quand un navigateur ne connait pas une balise, il affiche son contenu. S'il n'y a pas de contenu, rien n'est affiché, même pas les attributs, toute l'information qui est en attribut est perdue (sauf l'exception du alt sur les img pour des raisons de rétrocompatibiltié). L'information en attribut est donc tout simplement perdue, c'est pour ça que d'un point de vue purement théorique et formel, on préfère mettre le contenu "en dur" plutôt que dans les attributs.

On s'en fiche si c'est affiché, info-bullé, ou que sais-je, ce qui compte c'est que c'est du contenu informatif.
Blustuff a écrit :Si je parle de title, c'est que vous prenez comme exemple l'html : Dans le cas de l'html on peut mettre des choses dans title qui s'afficheront dans une infobulle. Réutilisez votre comparaison pour voir qu'alors, elle ne constitue plus un argument pour ne pas utiliser d'attribut.
Pardon ? Image
Je vois pas où tu veux en venir :oops:

Quel rapport avec le HTML ? Je parle d'un point de vue purement théorique et abstrait...
Blustuff a écrit :De plus, quand j'écris mon xml, je ne sais pas encore ce qu'il sera fait du nom de l'auteur. Sera t-il utilisé uniquement pour le tri ? Sera t-il affiché ? Sera t-il dans une infobulle ?
La question n'est pas "qu'est-ce qu'on en fait/va en faire" mais "qu'est-ce qu'il signifie". Si ça a une signification, alors il vaut mieux éviter l'attribut (toujours d'un point de vue académique :wink: )
Blustuff
Gecko
Messages : 51
Inscription : 15 mars 2005, 01:10

Message par Blustuff »

J'ai envie de dire "Et alors ?". Si le parseur n'affiche pas l'attribut, qu'est-ce que ca peut bien nous faire ? Le point de vue théorique n'y change absoulement rien, c'est d'ailleurs sous cet angle théorique que j'ai choisi l'attribut.
Si ça a une signification, alors il vaut mieux éviter l'attribut (toujours d'un point de vue académique Clin d'oeil
Si les attributs ne sont pas associés à une sémantique, alors, à quoi servent ils ?
Répondre

Qui est en ligne ?

Utilisateurs parcourant ce forum : Aucun utilisateur inscrit et 2 invités