Voir également ma page CSS avec HTML.
Le simple fait de préciser une feuille de style dans l'en-tête suffit à modifier l'affichage dans Internet Explorer. Soit le fichier meslogiciels.xml :
<LOGITHEQUE>
<Logiciel>
<Nom>Outlook</Nom>
<Version>XP</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
<Logiciel>
<Nom>Word</Nom>
<Version>2003</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
</LOGITHEQUE>
Va s'afficher de cette façon dans Internet Explorer :
Le simple fait de rajouter cette ligne en haut du fichier meslogiciels.xml:
<?xml-stylesheet
type="text/css" href="truc.css"?>
<LOGITHEQUE>
<Logiciel>
<Nom>Outlook</Nom>
<Version>XP</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
<Logiciel>
<Nom>Word</Nom>
<Version>2003</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
</LOGITHEQUE>
suffit à radicalement modifier l'affichage dans Internet Explorer. Le fait que truc.css existe ou pas n'a aucune importance. D'ailleurs la ligne suivante provoquerait le même effet :
<?xml-stylesheet type="text/css"?>
Voici l'affichage dans Internet Explorer :
Outlook XP Microsoft Word 2003 Microsoft |
Soit l'affichage de tous les éléments du fichier XML l'un à côté de l'autre, séparés par un simple espace.
Les paramètres ne sont tout à coup plus affichés. Par exemple :
<?xml-stylesheet
type="text/css"?>
<LOGITHEQUE>
<Logiciel Nom="Outlook">
<Version>XP</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
</LOGITHEQUE>
Affichera :
XP Microsoft |
L'idée est donc de ne pas simplement afficher les éléments tels quels, mais de préciser comment les données vont être affichées. Aussi, nous allons vraiment créer un document CSS. créons le document modele.css avec le contenu suivant :
Logiciel {display:block}
Ca veut dire que pour l'élément Logiciel, il faudra l'afficher comme un bloc, c'est à dire simplement placer un saut de ligne à la fin.
Chaque sous-balise définie en display:block apparaîtra sur une ligne a part : il y a un saut de ligne avant et après en quelque sorte :
<?xml-stylesheet
type="text/css" href="clientmodele.css"?>
<Client>
<Coordonnee>
<Nom>Muller</Nom>
<Prenom>Michel</Prenom>
<Adresse>Route
du Cacatoes 18</Adresse>
<CodePostal>75000</CodePostal>
<Ville>Paris</Ville>
<Pays>France</Pays>
</Coordonnee>
<Coordonnee>
<Nom>Bonpied</Nom>
<Prenom>Alexandre</Prenom>
<Adresse>Place
Vendôme 33</Adresse>
<CodePostal>1234</CodePostal>
<Ville>Bumplitz</Ville>
<Pays>Suisse</Pays>
</Coordonnee>
</Client>
et clientmodele.css :
Coordonnee {display:block;}
Adresse {display:block;}
Tout l'ensemble Coordonnee sera dont encadre d'un saut de ligne avant et après (sauf pour le premier, il n'y a pas d'affichage de ligne vide avant), mais en plus, la ligne d'adresse sera sur une ligne a part, ce qui donnera le résultat suivant :
Muller Michel Route du Cacatoes 18 75000 Paris France Bonpied Alexandre Place Vendôme 33 1234 Bumplitz Suisse |
Revons à meslogiciels.xml. Corrigeons le fichier meslogiciels.xml comme ceci :
<?xml-stylesheet
type="text/css" href="modele.css"?>
<LOGITHEQUE>
<Logiciel>
<Nom>Outlook</Nom>
<Version>XP</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
<Logiciel>
<Nom>Word</Nom>
<Version>2003</Version>
<Editeur>Microsoft</Editeur>
</Logiciel>
</LOGITHEQUE>
Maintenant, voici comment meslogiciels.xml va s'afficher dans Internet Explorer :
Outlook XP Microsoft Word 2003 Microsoft |
Admettons que nous voulions, en plus, afficher le résultat avec une police de caractères de taille 20 par exemple. Modifionc modele.css :
Logiciel {display:block; font-size:16pt}
Ou plutôt de manière plus structurée (le résultat sera le même) :
Logiciel {
display :
block;
font-size : 16pt
}
Voici le résultat dans Internet Explorer :
Outlook XP Microsoft Word 2003 Microsoft |
Il est possible de redéfinir les propriétés pour les éléments imbriqués. Par exemple :
Logiciel {
display : block;
font-size : 16pt
}
Editeur {
font-size
: 8pt
}
Va donner ce résultat :
Outlook XP Microsoft Word 2003 Microsoft |
Pour créer une ou plusieurs propriétés globales à tout le document XML, on peut définir l'élément racine, ici LOGITHEQUE.
Soit le fichier XML :
<?xml-stylesheet
type="text/css" href="modele.css"?>
<LOGITHEQUE>
<Logiciel>
<Nom>Outlook</Nom>
</Logiciel>
<Logiciel>
<Nom>Word</Nom>
</Logiciel>
</LOGITHEQUE>
Si nous désirons afficher la totalité en rouge, mais avec un saut de ligne entre chaque Logiciel, une solution élégante serait :
LOGITHEQUE {color:red}
Logiciel {display:block}
Résultat
Outlook Word |
Il est aussi possible d'ajouter un propriété. Dans l'exemple qui suit, la version va en plus de s'afficher en 16 points, s'afficher en italique :
Logiciel {
display : block;
font-size : 16pt
}
Editeur {
font-style
: italic
}
Va donner :
Outlook XP Microsoft Word 2003 Microsoft |
Précise la couleur. Les valeurs possibles sont :
Les valeurs hexadécimales s'échelonnent entre #000000 (0) et #FFFFFF (255). On peut ainsi attribuer une valeur qui n'existe pas dans le tableau, comme dans l'exemple suivant :
Logiciel {
color : Red
}
Version {
color:#1234F5
}
Précise la police de caractère à afficher. Comme on ne sait pas forcément quelles sont les polices installées chez le visiteur, il est possible de préciser plusieurs polices de caractères les unes après les autres, la première disponible sera utilisée :
Dans ce cas : la police Zurglon n'existe chez personne, Impact n'existe pas chez le visiteur, la dernière sera utilisée. Si elle n'existe pas non plus, la police par défaut sera utilisée (dépend de la configuration du visiteur)
Logiciel {
font-family :
impact, comic sans ms, courier new
}
Précise la taille de la police. Les tailles disponibles sont :
Exemple :
Logiciel {
font-size : small
}
Veut-on de l'italique ? Les valeurs sont :
(je n'ai pas perçu la différence entre italic et oblique)
Exemple :
Logiciel {
font-style : italic
}
Quelle épaisseur veut-on (Mince, gras, très gras...) ?
Les valeurs sont du plus mince au plus gras :
En fait, d'après mes tests, si on garde la police par défaut, il y a soit normal (Lighter, Light ou normal) OU Gras (Bold, bolder). Je pense que c'est seulement avec certaines polices de caractères prévues pour autant de nuances que ces paramètres s'appliquent correctement. A mon avis, la nuance entre Italic et Oblique est sujette au même commentaire.
Exemple
Logiciel {
font-weight :
bolder
}
Il s'agit de l'écartement entre les lettres. Ce paramètre accepte toutes les valeurs : une valeur négative va compresser les lettres, et une valeur positive va écarter les lettres. Comme on peut mettre n'importe quelle valeur, voici quelques exemples :
Exemple
Logiciel {
letter-spacing
: 7
}
Précise la marge de gauche. Précisez la valeur en pixels ou en pourcentage. L'avantage de préciser en pourcentage est que les proportions sont respectées : en effet, une marge de 50 pixels n'aura pas le même impact visuel sur un écran de 1600 X 1200 pixels que sur un écran de 640 par 400...
Exemples :
Affichage à 50 pixels du bord gauche de l'écran :
Logiciel {
margin-left :
50
}
Affichage à partir du milieu de l'écran :
Logiciel {
margin-left :
50%
}
Il existe également :
margin-right | margin-top | margin-bottom
Ce paramètre ressemble assez à margin-left, mais seulement pour la première ligne. En fait, cette propriété n'est intéressanter que dans le cas d'un texte qui se répand sur plusieurs lignes tellement il est long. Tout comme dans une lettre traditionnelle, il peut être aasez joli de mettre en retrait la première ligne de chaque paragraphe. En fait, on peut soit mettre cette première ligne en retrait plus à gauche ou plus à droite par rapport aux autres lignes de ce paragraphe : ça dépend des goûts.
On peut indiquer la valeur en pourcentage ou en pixels.
Quelques exemples :
Exemple :
Logiciel {
text-indent :
-12%
}
Alignement du texte : gauche, centré ou droite
Valeurs :
Exemple :
Logiciel {
text-align : center
}
Attention : bien que ce soit logique, il est bien de le préciser : on ne peut PAS redéfinir cette valeur pour un sous ensemble, comme ceci :
Logiciel {
display:block;
text-align:center;
}
Version {
text-align:right;
}
Il n'y aura pas d'erreur, mais tout sera centré.
Il s'agit du soulignement. on peut souligner/surligner/barrer, comme ceci :
Exemple :
Logiciel {
display:block;
text-decoration:line-through;
}
Attention : le soulignement est normalement le standard defacto pour les liens hypertexte. Aussi, si vous soulignez du texte non-clicable, vous risquez de troubler vos visiteurs.
Permet de changer la casse du texte. Voici les valeurs possible :
Exemple :
Logiciel {
display:block;
text-transform:uppercase;
}
Il reste encore quelques proporiuétés de tableau:
Comme il est interdit d'utiliser les catactères &, <, > notamment, il est possible de les utiliser quand même grâce à CDATA. Ce fichier va donner une erreur dans Internet Explorer :
<?xml-stylesheet
type="text/css"?>
<Client>
<Coordonnee>
<Nom>Dupont</Nom>
<LivrePrefere>
Je suis un
<papillon> rouge & bleu
</LivrePrefere>
<Prenom>Michel</Prenom>
</Coordonnee>
</Client>
Résultat :
Dupont Je suis un La page XML ne peut pas être affichée
Impossible d'afficher l'entrée XML en utilisant la feuille de style CSS. Corrigez l'erreur, puis cliquez sur le bouton Actualiser ou réessayez ultérieurement. -------------------------------------------------------------------------------- Aucun espace blanc n'est autorisé à cet emplacement. Erreur de traitement de la ressource file:///D:/Atelier/XML/client2.xml. Ligne 6, Position 36 Je suis un <papillon> rouge & bleu -----------------------------^ |
Tandis que celui ci va fonctionner sans erreur :
<?xml-stylesheet
type="text/css"?>
<Client>
<Coordonnee>
<Nom>Dupont</Nom>
<LivrePrefere>
<![CDATA[
Je
suis un <papillon> rouge & bleu
]]>
</LivrePrefere>
<Prenom>Michel</Prenom>
</Coordonnee>
</Client>
Résultat :
Dupont Je suis un <papillon> rouge & bleu Michel |
Voilà... Avec l'extrême exception : dans un CDATA, on ne peut pas avoir la chaîne ]]> mais évidemment, c'est un peu tordu :-)
Cette astuce est intéressante pour carrément afficher des balises HTML, comme ceci par exemple :
<?xml-stylesheet
type="text/css"?>
<Client>
<Entete>
<![CDATA[<HTML><body>]]>
</Entete>
<Coordonnee>
<Nom>Dupont</Nom>
<Prenom>Michel</Prenom>
</Coordonnee>
<Fin>
<![CDATA[</body></HTML>]]>
</Fin>
</Client>
Va afficher :
<HTML><body> Dupont Michel </body></HTML> |
Donc il va carrément afficher les Tags HTML et BODY au lieu de les interpréter simplement parce que c'est un fichier XML je suppose.
...