|
GULL - Genève - 02 Mars 2000
Gilbert ROBERT (c) Université de Genève
gilbert.robert@issco.unige.ch
|
|
|
|
|
|
<HTML>
<HEAD> <TITLE>document test </TITLE> <!-- Created by: Gilbert ROBERT, Fev-2000 --> </HEAD> <BODY> <H1>document test</H1> Voici un test! <ADDRESS> <A HREF="http://www.linux-gull.ch/cours/index.html"> Les cours du GULL</A> </ADDRESS> </BODY> </HTML> |
|
<P> Ce cours vous dit tout ou presque sur les "Markup Languages"</P> |
<P> Ce cours vous dit tout <q>ou presque</q> sur les "Markup Languages"</P> |
<note type="warning"> en cas d'urgence les toilettes sont à gauche en sortant </note> |
|
<figure entity="figure1">
<!ENTIY figure1 SYTEM "fig1.bmp" NDATA BMP> Fernand Léger é = é [SDATA] (system data) |
Exemple: un article
Article Titre Auteurs Résumé Partie1 Section 1.1. .... Section 1.n1 Partie k Section k.1 .... Section k.nk Conclusion |
<!DOCTYPE article [ <!-- Exemple de DTD pour document de type article --> <!-- Entités paramètres --> <!ENTITY % abs "#PCDATA" -- titre résumé--> <!ENTITY % titre "t0|t1|t2" -- titres article, partie, section--> <!ENTITY % acknow "#PCDATA" --titre remerciements--> <!ENTITY % text "(#PCDATA|#RCDATA|CDATA|key)+"--> <!ENTITY % concl "#PCDATA" -- titre conclusion--> <! -- Structure de l'article--> <!ELEMENT article --(%titre; ,aut, resum, corps, conclu)+> <!ELEMENT aut - 0 (nom, adr) -- noms et adresses des auteurs--> <!ELEMENT resum - 0 (%abs; ,resu) -- résumé de l'article--> <!ELEMENT corps 0 0 (part+) -- corps de l'article--> <!ELEMENT conclus - 0 (conclu&rem?)-- conclusion et remerciements--> <!ELEMENT biblio - 0(%tibib;,(nref,ref)+) -- bibliographie--> <! -- Détail des différents éléments de la structure article--> <!ELEMENT (nom|adr) 0 0 (#PCDATA) > <!ELEMENT resu 0 0 (p+) > <! --Structure du corps de l'article--> <!ELEMENT part - 0 (%titre;, (p|sect)+) -- partie--> <!ELEMENT sect - 0 (%titre;,p+) -- section--> <!ELEMENT p - 0 ((%text;) + |%renvoi;) -- paragraphe--> <!ELEMENT rem - 0 (%acknow;, p+) -- remerciements--> <!ELEMENT conclu - 0 (%concl;, p+) -- conclusion--> <!ELEMENT (%renvoi;) - 0 EMPTY--- renvois--> <!ELEMENT (%note;) - - (%text;)+ - (%note;)-- notes--> <!ELEMENT to 0 0 (#PCDATA) -- titre de l'article--> <!ELEMENT (t1|t2) 0 0 (%text;) -- titre des parties et sections--> <!ATTLIST (t1|t2) libelle CDATA #IMPLIED >]> |
|
|
XML = Extensible Markup Language
XML = Inventez vos tags
<Titre> Cours XML |
<?xml version='1.0' encoding='UTF-8' standalone='yes'?> |
<?xml version='1.0' encoding='UTF-8' standalone='no'?> |
<?xml version='1.0' encoding='UTF-8' ?> |
Namespaces |
<!ENTITY chapitre1 SYSTEM "chap1.xml"> |
<H2>Bibliographie XML</H2>
<UL> <LI> Jean-Christophe Bernadac et François Knab, <I>Construire une application XML</I>, Paris, Eyrolles, 1999</LI> <LI> Alain Michard, <I>XML, Langage et Applications</I>, Paris, Eyrolles, 1998 </LI> <LI> William J. Pardi, <I>XML en Action</I>, Paris, Microsoft Press, 1999, adapté de l'anglais par James Guerin</LI> </UL> |
<?xml version="1.0" encoding="ISO-8859-1"?> |
|
|
<?xml version="1.0"?>
<Recipe> <Name>Lime Jello Marshmallow Cottage Cheese Surprise</Name> <Description> My grandma's favorite (may she rest in peace). </Description> <Ingredients> <Ingredient> <Qty unit="box">1</Qty> <Item>lime gelatin</Item> </Ingredient> <Ingredient> <Qty unit="g">500</Qty> <Item>multicolored tiny marshmallows</Item> </Ingredient> <Ingredient> <Qty unit="ml">500</Qty> <Item>Cottage cheese</Item> </Ingredient> <Ingredient> <Qty unit="dash"/> <Item optional="1">Tabasco sauce</Item> </Ingredient> </Ingredients> <Instructions> <Step> Prepare lime gelatin according to package instructions </Step> <!-- And so on... --> </Instructions> </Recipe> |
<!-- This is the example DTD for the example
XML -->
<!ELEMENT Recipe (Name, Description?, Ingredients?, Instructions?)> <!ELEMENT Name (#PCDATA)> <!ELEMENT Description (#PCDATA)> <!ELEMENT Ingredients (Ingredient)*> <!ELEMENT Ingredient (Qty, Item)> <!ELEMENT Qty (#PCDATA)> <!ATTLIST Qty unit CDATA #REQUIRED> <!ELEMENT Item (#PCDATA)> <!ATTLIST Item optional CDATA "0" isVegetarian CDATA "true"> <!ELEMENT Instructions (Step)+> <!ELEMENT Step (#PCDATA)> |
|
|
<?xml version='1.0' ?> <?xml-stylesheet href="FeuilleDeStyle.css" type="text/css" ?> |
Une règle de style = un sélecteur + une ou de plusieurs propriétés ainsi que leur valeur respective.
|
<STYLE TYPE="text/css"> <!-- H1 { color: red; font-size: 16pt; text-decoration: underline } --> </STYLE> |
|
|
|
Mais CSS ne pourra pas vous permettre de "transformer" les données.
Il ne peut pas réorganiser ou restructurer les données ou faire des "cross-references".
Pour cela on a besoin de XSL (Extended Style Language)
(Extensible Stylesheet Language Transformation) |
<?xml version="1.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="page"> <xsl:processing-instruction name="cocoon-format">type="text/html" </xsl:processing-instruction> <html> <head> <title> <xsl:value-of select="title"/> </title> </head> <body bgcolor="#ffffff"> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="title"> <h1 align="center"> <xsl:apply-templates/> </h1> </xsl:template> <xsl:template match="content"> <p align="center"> <xsl:apply-templates/> </p> </xsl:template> <xsl:template match="comment"> <hr /> <xsl:apply-templates/> </xsl:template> </xsl:stylesheet> |
<?xml version="1.0"?> <?xml-stylesheet href="hello-page-html.xsl" type="text/xsl"?> <?cocoon-process type="xslt"?> <!-- modified from an example by Stefano Mazzocchi "stefano@apache.org" --> <page> <title>Hello Cocoon friend</title> <content> Here is some content :) </content> <comment> Written by DKS/Tecfa, adapted from S.M./the Cocoon samples </comment> </page> |
Avec DOM , HTML et XML les documents peuvent être manipulés comme des objets, au lieu d'être simplement un stream. De point de vue de DOM, un document est un arbre composé d'objet.
DOM fournit une méthode générale pour accéder aux données structurées d'un document structuré.
Chaque langage qui implémente DOM peut utiliser XML comme une interface pour stocker, retrouver et processer une structure d'objets génériques hiérarchisés.
<xsl:apply-templates />
examine tous les noeuds enfants, voici la règle pour la racine.
<xsl:template match="/">
<html>
<xsl:apply-templates/>
</html>
</xsl:template>
L'attribut "select" de apply-templates
permet de choisir un enfant nommé (au lieu de tous)
<xsl:template match="projet">
<xsl:apply-templates select="titre"/>
</xsl:template>
xsl:value-of
prend la valeur de qc et le copie vers le document "sortie"
autrement dit: sélection d'un seul sous-noeud
<xsl:template match="project">
<P>
<xsl:value-of select="problem/title"/>
</P>
</xsl:template>
|
[ XML + XSLT -> HTML ] = Java
Xalan - est le processeur XSLT du projet Apache/XML (Il est basé sur LotusXSL)Autres alternatives:
java / C++
Xerces - est le parseur XML utilisé par Xalan (c'est aussi un produit IBM)
java / C++ / Perl
Le parseur de James Clark (XT)
Saxon
- Cocoon est un 100% "pure Java publishing framework"
- XML creation
- XML processing
- XSL rendering (HTML, PDF, XML, WML, XHTML)
|