XML avec style… les CSS
Nous avons vu dans les pages précédentes qu'un document XML permettait de structurer de l'information. Nous allons maintenant voir comment présenter ces données.
Le document XML de départ
Afin d'illustrer les techniques de présentation des données d'un document xml, nous pouvons reprendre notre exemple :
Code XML (test_sansstyle.xml) (135 lignes)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- tests_sansstyle.xml //--> <!DOCTYPE livres [ <!ELEMENT livres (livre+)> <!ELEMENT livre (titre+,auteur+,editeur*,infos*)> <!ATTLIST livre genre CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT editeur (#PCDATA)> <!ELEMENT infos (description*,extrait*)> <!ELEMENT description (#PCDATA)> <!ELEMENT extrait (#PCDATA)> ]> <livres> <livre genre="Fantasy"> <titre>Le seigneur des anneaux</titre> <auteur>Tolkien</auteur> </livre> <livre genre="BD"> <titre>Voyage en Italie</titre> <auteur>Cosey</auteur> </livre> <livre genre="Info"> <titre>Les réseaux</titre> <auteur>Pujolle</auteur> <editeur>Eyrolles</editeur> <infos> <description>Cet ouvrage de référence, aujourd'hui considéré comme un classique de la littérature informatique, est aussi, grâce à ses mises à jour successives, un véritable livre d'actualité dans un monde des réseaux et télécoms caractérisé par des boulversements technologiques très rapides </description> </infos> </livre> <livre genre="prg"> <titre>C++ Ressources d'experts</titre> <auteur>Jesse Liberty</auteur> <editeur>Campus Press</editeur> <infos> <description>Description détaillée des fonctionnalités du C++ </description> <description>Stratégies avancées d'analyse et de conception orientées objet</description> <description>Problèmes d'implémentation</description> <description>Classes conteneurs de la STL, itérateurs et algorithmes </description> <description>Structures de données dynamiques</description> <description>Techniques d'analyse et de hachage</description> </infos> </livre> <livre genre="BD"> <titre>La quête de l'oiseau du temps</titre> <auteur>Loisel</auteur> <editeur>Dargaud</editeur> <infos> <description>Il était une fois, il y a très longtemps, au royaume d'Akbar, un dieu maudit nommé Ramor, que ses frères divins réussirent à emprisonner dans une conque. En lisant un grimoire, Mara, une princesse sorcière, découvre que cette prison ne peut-être définitivement scellée que par l'Oiseau du Temps. Le chevalier Bragon, autrefois fiancé à Mara, se lance dans la quête de l'Oiseau du Temps et entraîne avec lui la belle Pelisse, dont Mara est la mère. D'autres personnages typiques se joindront à cette quête jonchée de dangers multiples. Il leur faut du courage pour traverser le pays inconnu où se cache l'Oiseau à l'aspect stupéfiant. Ainsi commence cette fabuleuse saga racontée par un grand-père à ses petits-enfants. </description> </infos> </livre> <livre genre="Roman"> <titre>Nightmares from ECIS</titre> <auteur>Stephen King</auteur> <editeur>Signet Novel</editeur> <infos> <description>Un mot de trop, et le doigt est pris dans un engrenage infernal dans lequel notre personnage perdra la raison peu à peu. Une entité diabolique mène la java dans les méandres de l'ECIS, une sombre organisation qui pratique des expériences de manipulations cognitives sur ses membres. </description> </infos> </livre> <livre genre="BD"> <titre>Les lumières de l'Amalou</titre> <auteur>Gibelin</auteur> <editeur>Delcourt</editeur> <infos> <description> Autrefois les animaux et les Transparents vivaient en paix autour du Grand Chêne, le créateur de toute chose. Un jour, une Transparente et un furet s'adonnèrent à l'amour, et de cette union interdite naquirent Meth et Yz. Depuis ce temps, l'équilibre dépend de l'entente entre les deux peuples, mais de sombres forces sont à l'oeuvre. Orane saura-t-elle déceler la source du Mal pour sauver son univers ? </description> </infos> </livre> <livre genre="BD"> <titre>Lanfeust de Troy</titre> <auteur>Arleston</auteur> <editeur>Soleil</editeur> <infos> <description> L'histoire se déroule à Troy, monde fascinant, où la magie intervient dans le quotidien de tous. Chacun en effet possède un pouvoir, petit ou grand, plus ou moins utile. L'un a le don de figer l'eau en glace, l'autre le pouvoir d'émettre des pets colorés... Lanfeust, lui, sait fondre le métal d'un seul regard. Dans son village, il est donc tout naturellement devenu apprenti chez le forgeron. Mais le contact d'une épée venue des lointaines baronnies révèle en lui une puissance exceptionnelle; il ne dispose plus d'un don unique mais d'un pouvoir absolu et illimité. Accompagné du vieux sage Nicolède et de ses deux filles aux caractères si dissemblables, C'ian et Cixi, Lanfeust est emporté dans un tourbillon d'aventures au cours desquelles il croise les plus incongrues, les plus surprenantes et les plus dangereuses des créatures </description> </infos> </livre> <livre genre="BD"> <titre>Souviens-toi, Jonathan</titre> <auteur>Cosey</auteur> <editeur>Lombard</editeur> <infos> <description> Jonathan, va en Himalaya en pleine guerre, pour retrouver la mémoire qu'il a perdu. Il va rencontrer des marchands en voyage et retrouver par la même occasion ses anciens amis. Tous ses souvenirs vont revenir petit à petit et il va vivre une aventure pleine de dangers qui va le conduire jusqu'à son passé... </description> </infos> </livre> </livres>
Ce qui est affiché de cette manière par votre navigateur :
Présenter le document XML avec un CSS
Comme nous avons défini nos propres balises pour notre document xml, il est possible d'utiliser les feuilles de styles en cascades (CSS : Cascading Style Sheet).
Voyons le code du document xml :
Code XML (test_avecstyle.xml) (136 lignes)
<?xml version="1.0" encoding="UTF-8" standalone="yes"?> <!-- test_style.xml //--> <?xml-stylesheet href="../css/xml_test_style.css" type="text/css"?> <!DOCTYPE livres [ <!ELEMENT livres (livre+)> <!ELEMENT livre (titre+,auteur+,editeur*,infos*)> <!ATTLIST livre genre CDATA #REQUIRED> <!ELEMENT titre (#PCDATA)> <!ELEMENT auteur (#PCDATA)> <!ELEMENT editeur (#PCDATA)> <!ELEMENT infos (description*,extrait*)> <!ELEMENT description (#PCDATA)> <!ELEMENT extrait (#PCDATA)> ]> <livres> <livre genre="Fantasy"> <titre>Le seigneur des anneaux</titre> <auteur>Tolkien</auteur> </livre> <livre genre="BD"> <titre>Voyage en Italie</titre> <auteur>Cosey</auteur> </livre> <livre genre="Info"> <titre>Les réseaux</titre> <auteur>Pujolle</auteur> <editeur>Eyrolles</editeur> <infos> <description>Cet ouvrage de référence, aujourd'hui considéré comme un classique de la littérature informatique, est aussi, grâce à ses mises à jour successives, un véritable livre d'actualité dans un monde des réseaux et télécoms caractérisé par des boulversements technologiques très rapides </description> </infos> </livre> <livre genre="prg"> <titre>C++ Ressources d'experts</titre> <auteur>Jesse Liberty</auteur> <editeur>Campus Press</editeur> <infos> <description>Description détaillée des fonctionnalités du C++ </description> <description>Stratégies avancées d'analyse et de conception orientées objet</description> <description>Problèmes d'implémentation</description> <description>Classes conteneurs de la STL, itérateurs et algorithmes </description> <description>Structures de données dynamiques</description> <description>Techniques d'analyse et de hachage</description> </infos> </livre> <livre genre="BD"> <titre>La quête de l'oiseau du temps</titre> <auteur>Loisel</auteur> <editeur>Dargaud</editeur> <infos> <description>Il était une fois, il y a très longtemps, au royaume d'Akbar, un dieu maudit nommé Ramor, que ses frères divins réussirent à emprisonner dans une conque. En lisant un grimoire, Mara, une princesse sorcière, découvre que cette prison ne peut-être définitivement scellée que par l'Oiseau du Temps. Le chevalier Bragon, autrefois fiancé à Mara, se lance dans la quête de l'Oiseau du Temps et entraîne avec lui la belle Pelisse, dont Mara est la mère. D'autres personnages typiques se joindront à cette quête jonchée de dangers multiples. Il leur faut du courage pour traverser le pays inconnu où se cache l'Oiseau à l'aspect stupéfiant. Ainsi commence cette fabuleuse saga racontée par un grand-père à ses petits-enfants. </description> </infos> </livre> <livre genre="Roman"> <titre>Nightmares from ECIS</titre> <auteur>Stephen King</auteur> <editeur>Signet Novel</editeur> <infos> <description>Un mot de trop, et le doigt est pris dans un engrenage infernal dans lequel notre personnage perdra la raison peu à peu. Une entité diabolique mène la java dans les méandres de l'ECIS, une sombre organisation qui pratique des expériences de manipulations cognitives sur ses membres. </description> </infos> </livre> <livre genre="BD"> <titre>Les lumières de l'Amalou</titre> <auteur>Gibelin</auteur> <editeur>Delcourt</editeur> <infos> <description> Autrefois les animaux et les Transparents vivaient en paix autour du Grand Chêne, le créateur de toute chose. Un jour, une Transparente et un furet s'adonnèrent à l'amour, et de cette union interdite naquirent Meth et Yz. Depuis ce temps, l'équilibre dépend de l'entente entre les deux peuples, mais de sombres forces sont à l'oeuvre. Orane saura-t-elle déceler la source du Mal pour sauver son univers ? </description> </infos> </livre> <livre genre="BD"> <titre>Lanfeust de Troy</titre> <auteur>Arleston</auteur> <editeur>Soleil</editeur> <infos> <description> L'histoire se déroule à Troy, monde fascinant, où la magie intervient dans le quotidien de tous. Chacun en effet possède un pouvoir, petit ou grand, plus ou moins utile. L'un a le don de figer l'eau en glace, l'autre le pouvoir d'émettre des pets colorés... Lanfeust, lui, sait fondre le métal d'un seul regard. Dans son village, il est donc tout naturellement devenu apprenti chez le forgeron. Mais le contact d'une épée venue des lointaines baronnies révèle en lui une puissance exceptionnelle; il ne dispose plus d'un don unique mais d'un pouvoir absolu et illimité. Accompagné du vieux sage Nicolède et de ses deux filles aux caractères si dissemblables, C'ian et Cixi, Lanfeust est emporté dans un tourbillon d'aventures au cours desquelles il croise les plus incongrues, les plus surprenantes et les plus dangereuses des créatures </description> </infos> </livre> <livre genre="BD"> <titre>Souviens-toi, Jonathan</titre> <auteur>Cosey</auteur> <editeur>Lombard</editeur> <infos> <description> Jonathan, va en Himalaya en pleine guerre, pour retrouver la mémoire qu'il a perdu. Il va rencontrer des marchands en voyage et retrouver par la même occasion ses anciens amis. Tous ses souvenirs vont revenir petit à petit et il va vivre une aventure pleine de dangers qui va le conduire jusqu'à son passé... </description> </infos> </livre> </livres>
Nous déclarons que les éléments du document doivent être présentés selon la feuille de style externe par la syntaxe suivante :
<?xml-stylesheet href="adresse_du_css" type="text/css"?>
Voyons le code du document css :
Code css (test_style.css) (39 lignes)
/* Document CSS pour test_style.xml */ livres{ background-color: #FFFFFF; } livre{ display:block; margin: 10px; padding: 5px; border: 1px solid #000000; } editeur,infos,description,extrait{ display:block; font-size: 10pt; color: #999999; font-family:Verdana, Arial, Helvetica, sans-serif; } titre{ display:block; background-color: #999999; width: 300px; padding-left: 20px; font-size: 16pt; font-family: "Times New Roman", Times, serif; font-weight: 900; color: #FFFFFF; } auteur{ color: #000000; } description{ margin: 5px 0px 0px 20px; font-style: italic; }
Le document xml associé à sa feuille de style est affiché de cette manière par votre navigateur :
Nederlandse vertaling
U hebt gevraagd om deze site in het Nederlands te bezoeken. Voor nu wordt alleen de interface vertaald, maar nog niet alle inhoud.Als je me wilt helpen met vertalingen, is je bijdrage welkom. Het enige dat u hoeft te doen, is u op de site registreren en mij een bericht sturen waarin u wordt gevraagd om u toe te voegen aan de groep vertalers, zodat u de gewenste pagina's kunt vertalen. Een link onderaan elke vertaalde pagina geeft aan dat u de vertaler bent en heeft een link naar uw profiel.
Bij voorbaat dank.
Document heeft de 11/07/2004 gemaakt, de laatste keer de 02/08/2019 gewijzigd
Bron van het afgedrukte document:https://www.gaudry.be/nl/xml-css.html
De infobrol is een persoonlijke site waarvan de inhoud uitsluitend mijn verantwoordelijkheid is. De tekst is beschikbaar onder CreativeCommons-licentie (BY-NC-SA). Meer info op de gebruiksvoorwaarden en de auteur.