Projet XML
Projet XML
M. AKANATE Alassani
1. DJEUPISNE OUALOUMI
4. NOUMATEKPO Yao
5. ATITSOGBE Amavi
2
LISTE DES FIGURES
3
LISTE DES TABLEAUX
4
PARTIE 1 : GENERALITE SUR XML
5
INTRODUCTION
XML signifie eXtensible Markup Language. C'est un méta-langage permettant de définir des
langages à balises. XML est un standard du W3C depuis 1998.
Versions de XML :
Un méta-langage est un langage permettant de définir d'autres langages. XML ne définit pas
directement du contenu, mais permet de créer des langages qui eux-mêmes serviront à décrire des
informations.
Différence fondamentale : XML n'est PAS un langage, c'est un méta-langage. HTML est un
langage. XHTML est un langage XML.
Xml
<lambda>
<body>
<p>This is an example</p>
</body>
</lambda>
6
Dans cet exemple, le texte est "This is an example", il est balisé avec les informations suivantes :
c'est un paragraphe (balise p) du corps (balise body) d'un document Lambda (balise lambda)
Une balise est un descripteur ajouté au contenu en vue d'un traitement informatique. Un langage à
balises permet d'associer à un contenu des balises explicites pour rendre compte de sa structure.
Un schéma permet de définir un langage XML particulier. Il liste les mots du langage
(vocabulaire) et définit leur utilisation (grammaire). On parle aussi de format.
Le schéma permet de :
Langage standard : Un langage dont le schéma est défini par une organisation reconnue et
multipartite (W3C, ISO, OASIS) pour les besoins génériques d'une large communauté
internationale.
Standard de fait : Les langages imposés par une organisation unique, mais à une telle échelle que
leur usage est incontournable. Exemple : formats de Microsoft Office (.doc,
.xls, .ppt).
7
Langage local : Un langage défini par une organisation seule ou une communauté restreinte pour
ses besoins propres (un service, une entreprise, un réseau d'organisations).
Format ouvert : Un format public utilisable sans contrainte par n'importe qui.
Format fermé : Un format dont l'accès est protégé, payant ou soumis à contraintes.
<myVector>
<x>5</x>
<y>19</y>
</myVector>
Ce code représente un vecteur avec ses coordonnées x=5 et y=19, défini pour les besoins
spécifiques d'un programme.
Remarque importante : XML est plus verbeux que ses alternatives (CSV, JSON), ce qui le rend
plus explicite pour un humain mais moins performant informatiquement. Cette caractéristique
n'est pas toujours un problème selon les cas d'usage.
Langages XML de programmation : Le formalisme XML est également utilisé pour définir des
langages de programmation, généralement à vocation déclarative. Exemples : XSLXSLT, ANT,
XUL.
Ils définissent des formats de mise en forme de document, généralement pour un support donné.
Exemples :
• XHTML (web)
• XSL-FO (impression)
• SMIL (multimédia)
• OpenDocument (bureautique libre)
• OOXML (Microsoft Office)
Ils définissent des formats de structuration de document, généralement pour un métier donné, plus
ou moins précis selon la généralité du langage.
Exemples :
xml
<?xml version="1.0" encoding="UTF-8"?>
<document type="Lorem ipsum">
<paragraphe>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Pellentesque sit amet
libero ac mauris egestas venenatis nec vitae sapien.</paragraphe>
<paragraphe>Donec a lectus sed augue pellentesque accumsan eu ac justo.
Etiam est urna, sagittis ac cursus nec, placerat quis velit.</paragraphe>
</document>
Ce document utilise une structure logique avec des éléments document et paragraphe, sans
spécifier comment ils doivent être présentés visuellement.
9
1.8 Caractéristiques essentielles de XML
Non-ambiguïté : Les règles syntaxiques strictes d'XML rendent son interprétation informatique
univoque. Il n'y a qu'une seule façon d'interpréter un document XML bien formé.
Lisibilité : Un format XML a pour objectif d'être lisible par un être humain, afin de plus
facilement en appréhender le langage. Les balises sont explicites et le contenu reste visible.
2. SYNTAXE XML
2.1 Document bien formé
Un document est dit bien formé lorsqu'il respecte les règles syntaxiques du XML.
Important : XML ne pose pas de sémantique à priori mais uniquement des règles syntaxiques.
1. Une seule racine : Il n'existe qu'un seul élément père par document, appelé racine,
contenant tous les autres éléments.
2. Inclusion complète : Tout élément fils est inclus complètement dans son père (pas
d'éléments croisés).
3. Fermeture obligatoire : Toute balise ouverte doit être fermée.
Attention : XML ne définit pas le comportement ni la manière dont doit être traité un
xml
10
?</paragraphe>
<paragraphe>Il me faudrait en effet ton avis éclairé sur le sujet.</paragraphe>
<paragraphe>J'attends ta réponse, à bientôt</paragraphe>
</corps>
</mail>
• Il possède une unique racine <mail> qui contient tous les autres éléments
• Tous les éléments sont complètement inclus les uns dans les autres
• Toutes les balises ouvertes sont fermées
Les balises sont les composants fondamentaux permettant l'écriture de documents XML. Elles se
distinguent du contenu en utilisant les caractères <, > et /.
Les balises n'ont pas de présentation ou de signification définie par le langage mais elles auront
un sens pour les applications et/ou le lecteur.
11
2.3 Les éléments
Attention : Deux éléments ne peuvent pas avoir un contenu croisé. Cette syntaxe est interdite :
<nom1> ... <nom2> ... </nom1> ... </nom2>
Éléments vides :
Un élément vide est un élément qui ne comporte rien entre sa balise ouvrante et sa balise
fermante.
• <element></element>
• <element/>
xml
<lettre>
<expediteur>moi</expediteur> </lettre>
12
1. Les attributs sont formés d'une suite d'affectations séparées par des espaces :
attribut1='valeur' attribut2='valeur'
2. Ils sont ajoutés à la balise ouvrante ou à une balise vide (jamais à une balise fermante)
3. La valeur est indiquée entre apostrophes ' ou guillemets " (au choix, mais pas de mélange
des deux)
4. Un élément ne peut pas contenir deux attributs ayant le même nom
5. Le nom d'un attribut est soumis aux mêmes contraintes que les noms d'éléments
6. La valeur de l'attribut peut contenir tout caractère à l'exception de ^, % et &
Méthode : Utilisez des apostrophes si la valeur de l'attribut inclut des guillemets et vice versa.
Équivalence attribut/élément :
Un attribut peut toujours être représenté alternativement par un élément fils. Ces deux syntaxes
sont similaires :
• <element attribut="x"/>
• <element><attribut>x</attribut></element>
Il est donc tout à fait possible de faire du XML sans utiliser d'attribut.
• Pour différencier le contenu destiné à être affiché des métadonnées qui ne le seront pas
(version, date de création, etc.)
• Pour simplifier l'écriture du document
• Pour ajouter des identifiants et des références
13
<paragraphe>Pourrais-tu m'indiquer quelle est la vitesse de vol d'une hirondelle
transportant une noix de coco ?</paragraphe>
<politesse>A très bientôt,</politesse>
<signature>Marcel</signature>
</corps>
</email>
1. Le prologue (facultatif) :
Il comprend une déclaration XML, indiquant la version du langage XML utilisé et le codage des
caractères dans le document. Chacune de ces informations est optionnelle mais leur ordre est
obligatoire.
Syntaxe : xml
prologue : xml
<lettre>
<expediteur>moi</expediteur>
</lettre>
14
2.6 Commentaires
Un fichier XML peut contenir des commentaires. Ils peuvent être insérés n'importe où dans le
document.
Syntaxe : xml
<document>
Ceci est un contenu.
<!-- Ceci est un commentaire -->
</document>
Les commentaires ne sont pas traités par les programmes XML et servent uniquement à
documenter le code pour les développeurs.
<papier type="scientifique">
<titre>Réinterroger les structures documentaires</titre>
<sousTitre>De la numérisation à l'informatisation</sousTitre>
<auteur>Stéphane Crozat</auteur>
<auteur>Bruno Bachimont</auteur>
<resume>Nous proposons dans cet article d'aborder ...</resume>
<abstract>In this paper we define...</abstract>
<motsCles>
<terme>Ingénierie des connaissances</terme>
<terme>XML</terme>
<terme>Document</terme>
</motsCles>
<keywords>
<word>Knowledge engineering</word>
<word>XML</word>
<word>Document</word>
15
</keywords>
<publication date="2004-07-05"/>
<version maj='1' min='0'/>
<ressource uriSrc="[Link]
[Link]"/>
</papier>
Analyse du document :
Règle importante : Les balises doivent être fermées dans l'ordre dans lequel elles sont ouvertes,
pour que chaque élément soit inclus dans son père. La syntaxe XML est sensible à la casse : P est
différent de p.
16
3. SCHÉMAS XML
3.1 Notion de document valide
Schéma : Un schéma est une description de la structure que doit respecter un document lui faisant
référence. Il établit la liste des éléments XML autorisés (avec leurs attributs), ainsi que
l'agencement possible de ces éléments.
On parle aussi de grammaire, au sens où le schéma définit l'enchaînement autorisé des balises et
vient en complément de la syntaxe XML (qui elle est indépendante d'un schéma particulier).
Document valide : Un document XML bien formé est dit valide pour un schéma donné s'il
respecte les règles structurelles imposées par ce schéma.
Il existe plusieurs langages de définition de schéma, mais les trois principaux sont :
1. Document Type Definition (W3C) : Un langage hérité de SGML qui fait partie du
standard XML
2. W3C XML Schema (W3C) : Une alternative aux DTD destiné à moderniser et compléter
ce langage historique
3. Relax NG (OASIS, ISO) : Une autre alternative, compromis entre W3C XML Schema et
DTD
Le formalisme DTD est le premier qui a été introduit dès la première version du standard
XML. Il est intégré au standard W3C de XML. Il est directement hérité de la norme SGML.
Les DTDs utilisent un langage spécifique (non XML) pour définir les règles structurelles.
1. Déclarations d'éléments : Indiquent les éléments pouvant être inclus dans un document et
l'organisation du contenu de chaque élément (éléments fils ou texte).
2. Déclarations d'attributs : Définissent les attributs pouvant être associés à un élément ainsi
que leur type.
17
Exemple de DTD simple : dtd
cette DTD :
18
La ligne <!DOCTYPE document SYSTEM "[Link]"> indique que ce document doit être
valide par rapport à la DTD contenue dans le fichier [Link].
de la DTD :
• entete contient dans l'ordre : titre (1), date (1), auteur (1 ou +), motscles (0 ou +), resume
(0 ou 1)
• titre, date, auteur, motscles contiennent du texte
• resume contient un ou plusieurs paragraphe
• paragraphe contient du texte Document XML valide minimal : xml
<?xml version="1.0"?>
<!DOCTYPE entete SYSTEM "[Link]">
<entete>
<titre/>
<date/>
<auteur/>
</entete>
Ce document est valide car il contient le minimum requis : titre, date et un auteur (tous peuvent
être vides).
<?xml version="1.0"?>
<!DOCTYPE entete SYSTEM "[Link]">
<entete>
<titre>Mon document</titre>
<date>Aujourd'hui</date>
<auteur>Moi</auteur>
19
<motscles>Document</motscles>
<resume>
<paragraphe>Mon résumé</paragraphe>
</resume>
</entete>
<?xml version="1.0"?>
<!DOCTYPE entete SYSTEM "[Link]">
<entete>
<titre>Document de test</titre>
<date>2 décembre 2009</date>
<auteur>Stéphane Crozat</auteur>
<motscles>Document DTD XML Valide</motscles>
</entete>
Ce document est valide car il respecte la structure imposée par la DTD (titre, date, auteur
présents, motscles optionnel présent, resume optionnel absent).
Les XML Schema ont été proposés par le W3C pour permettre de dépasser les limites des DTD.
Avantages principaux :
Exemple de DTD :
dtd
20
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="[Link]
<xs:element name="document">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="paragraphe"/>
</xs:sequence>
<xs:attribute name="type" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="paragraphe" type="xs:string"/>
</xs:schema>
Explication :
3.4 RelaxNG
RelaxNG (REgular LAnguage for XML Next Generation) est un langage de schéma XML.
Exemple de DTD :
dtd
<!ELEMENT document (paragraphe+)>
<!ATTLIST document type CDATA #REQUIRED>
<!ELEMENT paragraphe (#PCDATA)>
21
<?xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="[Link]
<start>
<element name="document">
<attribute name="type"/>
<oneOrMore>
<element name="paragraphe">
<text/>
</element>
</oneOrMore>
</element>
</start>
</grammar>
La syntaxe compacte est beaucoup plus lisible et concise que la syntaxe XML.
xml
xml version="1.0" encoding="UTF-8"?>
<grammar xmlns="[Link]
<start>
<ref name="document"/>
</start>
<define name="document">
<element name="document">
<attribute name="type"/>
<oneOrMore>
<ref name="paragraphe"/>
22
</oneOrMore>
</element>
</define>
<define name="paragraphe">
<element name="paragraphe">
<text/>
</element>
</define> </grammar>
Les patterns nommés (`<define>` et `<ref>`) permettent de réutiliser des définitions et de mieux
structurer le schéma.
4. MANIPULATIONS XML
4.1 L'arbre du document XML
Il est possible de représenter un document XML sous forme d'arbre, tel que :
Remarque importante : L'ensemble des nœuds de l'arbre d'un document est muni d'un ordre, qui
est celui de l'ordre dans le document XML sérialisé.
/
|document
|@modele = "ULCoursGeneral"
|@code = "BP-Incendie3_S1_E2_UL1"
|entete
|identification
|titre
|text() = "L'assurance de ..."
|date
|text() = "21/02/01"
|auteur
|text() = "AEA"
|version
|text() = "1.00"
|corps
|contenu
|paragraphe
|text() = "Cette garantie ..."
|remarque
|paragraphe
|text() = "L'image suivante"
|ressource
24
|@URIsrc = "[Link]"
|@titre = "Recours des voisins..."
|@type = "image"
|text() = "montre la garantie."
Expression XPath : XPath est un langage d'expressions permettant de pointer sur n'importe quel
élément d'un arbre XML depuis n'importe quel autre élément de l'arbre.
Types d'expressions :
xpath
/document/entete/identification/titre
/document/@modele
corps//contenu contenu/*
contenu/remarque[1]
../paragraphe @type
25
• /document/entete/identification/titre : Chemin absolu vers l'élément titre
• /document/@modele : Attribut modele de l'élément racine document
• corps//contenu : Élément contenu descendant de corps (à n'importe quel niveau)
• contenu/* : Tous les éléments fils de contenu
• contenu/remarque[1] : Premier élément remarque fils de contenu
• ../paragraphe : Élément paragraphe frère du nœud courant
• @type : Attribut type du nœud courant
4.3 XSL-XSLT
Définition : XSL-XSLT est une partie du standard W3C XSL qui a trait à la transformation des
documents XML (l'autre partie étant XSL-FO).
XSL-XSLT est un langage de programmation déclaratif écrit en XML (un programme XSLXSLT
est un document XML).
Remarque : On parle souvent (par simplification) de XSL ou de XSLT pour désigner XSLXSLT
et de FO pour désigner XSL-FO. XSL utilisé seul désigne donc par convention XSLXSLT.
Principe de fonctionnement :
Algorithme général :
Notion de règle :
26
Un programme XSL-XSLT est composé d'une succession de règles. Chaque règle est
indépendante des autres et a en charge de sélectionner un élément dans la source et d'effectuer
une écriture dans la cible.
<a>
<b/><b/><c/> </a>
Règle XSL-XSLT :
xml
<xsl:template match="/a/b">
BONJOUR </xsl:template>
Résultat
BONJOUR BONJOUR
Explication : La règle sélectionne tous les éléments b fils de a (il y en a deux) et génère le texte
"BONJOUR" pour chacun.
Définition : SAX est l'acronyme de Simple API for XML. SAX est une API qui sert à parcourir
un fichier XML, elle se base sur des événements déclenchés durant la lecture du flux (balise
ouvrante, balise fermante, etc.).
Caractéristiques :
• Développée pour plusieurs langages de programmation (JAVA, C++, PHP, Perl, etc.)
• Très utilisé pour les documents très lourds, car il nécessite moins de mémoire que les
autres API
• Lecture en flux (streaming)
Principe : La première interface (ContentHandler) permet d'analyser le flux entrant à l'aide des
événements. Il suffit de redéfinir les fonctions pour avoir le comportement souhaité.
Un élément correspond à des balises, notamment une balise ouvrante et une balise fermante.
27
startElement : Déclenchée au démarrage d'un élément XML (balise ouvrante). Elle a plusieurs
paramètres dont l'espace de nommage, le nom de la balise, et les attributs de cette balise s'ils
existent.
Exemple en Java :
java
public void startElement(String uri, String localName, String rawName,
Attributes atts) throws SAXException { [Link]("Ouverture de la balise :
" + localName);
}
Dans l'interface ContentHandler, ces événements sont gérés par les deux fonctions startDocument
et endDocument.
• La fonction startDocument est la première fonction qui est appelée parmi toutes
les autres
• De même endDocument est la dernière fonction qui est appelée à la fin de
Définition : Le DOM (Document Object Model) est un standard W3C qui décrit une API orientée
objet permettant de représenter un document XML ou HTML en mémoire afin de le manipuler
avec un langage de programmation.
28
Le standard DOM est indépendant d'un langage de programmation en particulier, et implémenté
dans de nombreux langages (JavaScript, Java, PHP, C, etc.).
Citation W3C : "The Document Object Model is a platform- and language-neutral interface that
will allow programs and scripts to dynamically access and update the content, structure and style
of documents."
Fonctions du DOM :
Exemple d'utilisation :
• Faire apparaître ou disparaître des éléments div en fonction d'une action utilisateur
• Créer ou initialiser des contrôles de formulaire
• Modifier le style des éléments Etc.
getElementById : javascript
getElementsByTagName :
javascript
vDivs = [Link]("p"); for (var i=0;
i<[Link]; i++) { [Link](i)...;
}
Récupère tous les éléments d'un type donné (ici tous les paragraphes).
firstChild : javascript
alert([Link]);
29
Accède au premier enfant d'un nœud et à son contenu.
removeChild : javascript
enfant.
appendChild : javascript
[Link](vDiv2); Ajoute
CONCLUSION
XML est un langage utilisé pour structurer, stocker et échanger des données. Il est lisible, flexible et
indépendant des plateformes. Grâce à des outils comme DTD, XML Schema et XPath, XML assure une
bonne organisation et une validation fiable des données.
30
PARTIE 2 : REALISATION DU PROJET
31
INTRODUCTION
Ce projet port sur la gestion des étudiants de l’établissement d’ESGIS. Il vise a modéliser,
structurer et exploiter des informations relatives aux étudiants, a leurs filières, aux unités
d’enseignement (ue) ainsi qu’a leurs différentes notes. à travers l’utilisation des technologies xml,
dtd, css, xslt et php, ce travail permet de mettre en pratique les notions theoriques vues en cours
tout en developpant des compétences en structuration des donnees, en transformation de documents
et en interaction avec une base de donnees. L’objectif principal est de concevoir une solution
complete et coherente pour la gestion et l’affichage des informations academiques des etudiants.
33
<notes>
<ds1>10</ds1>
<ds2>11</ds2>
<tp>13</tp>
<examen>12</examen>
</notes>
</ue>
</ues>
</etudiant>
<etudiant code="2">
<nom>AGBEKO</nom>
<prenom>Ama</prenom>
<filiere>Gestion</filiere>
<niveau>L2</niveau>
<ues>
<ue>
<libelleUE>Comptabilité</libelleUE>
<notes>
<ds1>15</ds1>
<ds2>16</ds2>
<tp>14</tp>
<examen>17</examen>
</notes>
</ue>
<ue>
<libelleUE>Marketing</libelleUE>
<notes>
<ds1>11</ds1>
<ds2>12</ds2>
<tp>10</tp>
<examen>13</examen>
</notes>
</ue>
</ues>
</etudiant>
<etudiant code="3">
<nom>MENSAH</nom>
34
<prenom>Edem</prenom>
<filiere>Informatique</filiere>
<niveau>L3</niveau>
<ues>
<ue>
<libelleUE>Réseaux</libelleUE>
<notes>
<ds1>19</ds1>
<ds2>10</ds2>
<tp>12</tp>
<examen>11</examen>
</notes>
</ue>
<ue>
<libelleUE>Sécurité Informatique</libelleUE>
<notes>
<ds1>13</ds1>
<ds2>15</ds2>
<tp>16</tp>
<examen>14</examen>
</notes>
</ue>
</ues>
</etudiant> </esgis>
esgis (racine)
│
├── etudiant [@code="1"]
│ ├── nom
│ ├── prenom
│ ├── filiere
│ ├── niveau
35
│ └── ues
│ ├── ue
│ │ ├── libelleUE
│ │ └── notes
│ │ ├── ds1
│ │ ├── ds2
│ │ ├── tp
│ │ └── examen
│ └── ue
│ ├── libelleUE
│ └── notes
│ ├── ds1
│ ├── ds2
│ ├── tp
│ └── examen
│
├── etudiant [@code="2"]
│ ├── nom
│ ├── prenom
│ ├── filiere
│ ├── niveau
│ └── ues
│ ├── ue
│ │ ├── libelleUE
│ │ └── notes
│ │ ├── ds1
│ │ ├── ds2
│ │ ├── tp
│ │ └── examen
│ └── ue
│ ├── libelleUE
│ └── notes
│ ├── ds1
│ ├── ds2
│ ├── tp
│ └── examen
│
└── etudiant [@code="3"]
├── nom
36
├── prenom
├── filiere
├── niveau
└── ues
├── ue
│ ├── libelleUE
│ └── notes
│ ├── ds1
│ ├── ds2
│ ├── tp
│ └── examen
└── ue
├── libelleUE
└── notes
├── ds1
├── ds2
├── tp
└── examen
LÉGENDE :
[@code] = attribut
└── = élément enfant
│ = niveau hiérarchique
37
niveau (#PCDATA)>
esgis { display: block; font-family: 'Inter', 'Segoe UI', 'Roboto', 'Arial', sans-serif;
background: var(--light-bg); background-image: linear-gradient(135deg, #f5f7fa 0%, #e4e9f2
100%); min-height: 100vh; padding: 30px 20px; line-height: 1.6;
color: var(--text-dark);
}
.....
.....
....
38
10px; box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
transition: all 0.3s ease;
}
Résultat :
6. Proposons et appelons le fichier XSLT qui affiche l’étudiant dont le code est égal à
«3 »
39
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="[Link]
<xsl:template match="/">
<html>
<head>
<title>Étudiant Code 3 - ESGIS</title>
<style> body {
font-family: Arial, sans-serif; background-color:
#ffffff; padding: 20px;
}
.etudiant {
background-color: #ffffff; border:
2px solid #000000; border-radius: 10px;
padding: 20px; max-width: 800px;
margin: 0 auto;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
} h1 {
background-color: #ff0000; color:
#ffffff; padding: 15px; border-radius:
5px;
} .info {
margin: 10px 0; font-size: 18px;
color: #000000;
} .label {
font-weight: bold; color: #ff0000;
} .ue {
background-color: #ffffff; border-left: 4px
solid #ff0000; border: 1px solid #000000;
padding: 15px; margin: 15px 0; border-
radius: 5px;
40
.ue-titre { font-size: 18px;
font-weight: bold; color: #ff0000;
margin-bottom: 10px;
} .notes {
display: flex; gap: 10px;
flex-wrap: wrap;
} .note {
background-color: #ff0000; color:
#ffffff; padding: 8px 15px; border-
radius: 5px; font-weight: bold;
}
</style>
</head>
<body>
<xsl:apply-templates select="//etudiant[@code='3']"/>
</body> </html>
</xsl:template>
<xsl:template match="etudiant[@code='3']">
<div class="etudiant">
<h1>Étudiant Code : <xsl:value-of select="@code"/></h1>
<div class="info">
<span class="label">Nom :</span>
<span><xsl:value-of select="nom"/></span>
</div>
<div class="info">
<span class="label">Prénom :</span>
<span><xsl:value-of select="prenom"/></span>
</div>
<div class="info">
<span class="label">Filière :</span>
<span><xsl:value-of select="filiere"/></span>
</div>
<div class="info">
<span class="label">Niveau :</span>
41
<span><xsl:value-of select="niveau"/></span>
</div>
</xsl:stylesheet>
Résultat :
42
Figure 2: Resultat du fichier XSLT qui affiche l’étudiant dont le code est égal à «3 »
<?php
$xml = simplexml_load_file('[Link]');
?>
<head>
43
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestion des Notes - ESGIS</title>
<link rel="stylesheet" href="[Link]">
</head>
<body>
<div class="container">
<div class="header">
<h1>🎓🏫 ÉTABLISSEMENT ESGIS</h1>
<p>Système de Gestion des Notes des Étudiants</p>
</div>
<?php
// Parcourir tous les étudiants foreach ($xml->etudiant
as $etudiant) {
$code = (string)$etudiant['code'];
$nom = (string)$etudiant->nom;
$prenom = (string)$etudiant->prenom;
$filiere = (string)$etudiant->filiere;
$niveau = (string)$etudiant->niveau;
45
echo "<div class='step'>";
echo "<strong>Étape 1 :</strong> Moyenne des devoirs (DS1 + DS2 + TP) / 3<br>"; echo
"= (" . number_format($ds1, 2, '.', '') . " + " .
number_format($ds2, 2, '.', '') . " + " . number_format($tp, 2, '.', '') . ") /
3<br>"; echo "= " . number_format($ds1 + $ds2 + $tp, 2, '.', '') . " /
3<br>"; echo "= <strong>$moyenneDevoirsFormat</strong>";
echo "</div>";
// Résultat final
echo "<div class='resultat-section'>"; echo "<div class='moyenne-box'>";
echo "<div class='moyenne-label'>Moyenne Finale de l'UE</div>"; echo "<div
class='moyennevalue'>$moyenneFinaleFormat<small>/20</small></div>"; echo "</div>";
echo "<div class='statut $classeStatut'>$statut</div>"; echo "</div>";
echo "</div>";
}
echo "</div>";
echo "</div>";
}
?>
</div> </body>
</html>
46
Résultat 1:
Résultat 2 :
47
Figure 4: La moyenne non validée
7. Utilisation d’une base de donnée : A l’aide du langage de programmation PHP, afficher
chaque étudiant, la moyenne de chaque matière et si la matière est validée (Validée si
moyenne >= 10)
<?php
$host = 'localhost';
$dbname = 'esgis_db';
$username = 'root'; $password = '';
try {
$pdo = new PDO("mysql:host=$host;dbname=$dbname;charset=utf8", $username, $password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
48
$sql = " SELECT
[Link],
[Link],
[Link],
[Link],
[Link],
[Link],
n.ds1,
n.ds2,
[Link],
[Link] FROM
etudiants e
INNER JOIN notes n ON [Link] = n.code_etudiant
ORDER BY [Link], [Link]
";
$stmt = $pdo->prepare($sql);
$stmt->execute();
$resultats = $stmt->fetchAll(PDO::FETCH_ASSOC);
} catch(PDOException $e) {
die("Erreur de connexion à la base de données: " . $e->getMessage());
}
?>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Gestion des Notes - ESGIS</title>
<link rel="stylesheet" href="[Link]">
</head>
<body>
<div class="container">
<div class="header">
<h1>🎓🏫 ÉTABLISSEMENT ESGIS</h1>
<p>Système de Gestion des Notes des Étudiants - Base de Données</p>
49
</div>
50
// Afficher les UEs foreach ($etudiant['ues'] as
$ue) {
$ds1 = (float)$ue['ds1'];
$ds2 = (float)$ue['ds2'];
$tp = (float)$ue['tp'];
$examen = (float)$ue['examen'];
51
echo "<div class='note-box'>"; echo "<div class='label'>Examen</div>";
echo "<div class='value'>" . number_format($examen, 2, '.',
'') . "</div>"; echo "</div>";
echo "</div>";
52
}
}
?>
</div> </body>
</html>
Résultat 1 :
53
Figure 6: La moyenne finale de l’UE
Après modification des notes :
Résultat 2
54
Figure 8: La moyenne finale de l’UE après modification
CONCLUSION
En conclusion, ce projet a permis de comprendre l’importance du langage XML dans la structuration et
l’échange des données. La mise en œuvre d’une DTD a assuré la validité du document XML, tandis que
l’utilisation des fichiers CSS et XSLT a facilité la présentation et la transformation des données.
L’exploitation du fichier XML à l’aide du langage PHP, avec et sans base de données, a renforcé nos
compétences en programmation et en traitement des données académiques.
55