Exercice de cours :
Une entreprise fonctionne avec un certain nombre de personnes et gère un certain
nombre de projets. Une personne possède un nom et un ensemble d'informations personnelles
qu'on ne détaillera pas. Un projet est caractérisé par un nom et un descriptif. Une personne
peut participer à plusieurs projets et un projet est, en général, conduit par plusieurs personnes.
1. Donner le document XML correspondant aux trois exemples de données.
2. Créer ensuite le DTD de ce fichier (interne et externe).
3. Créer ensuite le xsl de ce fichier.
Correction :
1:
<?xml version="1.0" encoding="UTF-8"?>
<entreprise>
<personnes>
<personne>
<nom>Alice</nom>
<!-- Informations personnelles de Alice -->
</personne>
<personne>
<nom>Bob</nom>
<!-- Informations personnelles de Bob -->
</personne>
<!-- Ajoutez d'autres personnes si nécessaire -->
</personnes>
<projets>
<projet>
<nom>Projet A</nom>
<description>Projet de développement logiciel</description>
<participants>
<personne>Alice</personne>
<personne>Bob</personne>
<!-- Ajoutez d'autres participants si nécessaire -->
</participants>
</projet>
<projet>
<nom>Projet B</nom>
<description>Projet de recherche en intelligence
artificielle</description>
<participants>
<personne>Bob</personne>
<!-- Ajoutez d'autres participants si nécessaire -->
</participants>
</projet>
<!-- Ajoutez d'autres projets si nécessaire -->
</projets>
</entreprise>
2:
Interne : ([Link])
<!DOCTYPE entreprise [
<!ELEMENT entreprise (personnes, projets)>
<!ELEMENT personnes (personne+)>
<!ELEMENT personne (#PCDATA)>
<!ELEMENT projets (projet+)>
<!ELEMENT projet (nom, description, participants)>
<!ELEMENT nom (#PCDATA)>
<!ELEMENT description (#PCDATA)>
<!ELEMENT participants (personne+)>
]>
Externe :
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE entreprise SYSTEM "[Link]">
<entreprise>
<personnes>
<personne>
<nom>Alice</nom>
<!-- Informations personnelles de Alice -->
</personne>
<personne>
<nom>Bob</nom>
<!-- Informations personnelles de Bob -->
</personne>
<!-- Ajoutez d'autres personnes si nécessaire -->
</personnes>
<projets>
<projet>
<nom>Projet A</nom>
<description>Projet de développement logiciel</description>
<participants>
<personne>Alice</personne>
<personne>Bob</personne>
<!-- Ajoutez d'autres participants si nécessaire -->
</participants>
</projet>
<projet>
<nom>Projet B</nom>
<description>Projet de recherche en intelligence
artificielle</description>
<participants>
<personne>Bob</personne>
<!-- Ajoutez d'autres participants si nécessaire -->
</participants>
</projet>
<!-- Ajoutez d'autres projets si nécessaire -->
</projets>
</entreprise>
[Link]
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="[Link]
<!-- Définition du type pour les noms de personnes -->
<xs:simpleType name="nomType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- Définition du type pour les descriptions de projet -->
<xs:simpleType name="descriptionType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- Définition du type pour les noms de projet -->
<xs:simpleType name="projetType">
<xs:restriction base="xs:string"/>
</xs:simpleType>
<!-- Définition du type pour les participants -->
<xs:complexType name="participantsType">
<xs:sequence>
<xs:element name="personne" type="nomType" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- Définition du type pour un projet -->
<xs:complexType name="projetType">
<xs:sequence>
<xs:element name="nom" type="projetType"/>
<xs:element name="description" type="descriptionType"/>
<xs:element name="participants" type="participantsType"/>
</xs:sequence>
</xs:complexType>
<!-- Définition du type pour les personnes -->
<xs:complexType name="personnesType">
<xs:sequence>
<xs:element name="personne" minOccurs="1" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="nom" type="nomType"/>
<!-- Ajoutez d'autres informations personnelles si nécessaire -->
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
<!-- Définition du type pour les projets -->
<xs:complexType name="projetsType">
<xs:sequence>
<xs:element name="projet" type="projetType" minOccurs="1"
maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
<!-- Définition de l'élément racine "entreprise" -->
<xs:element name="entreprise">
<xs:complexType>
<xs:sequence>
<xs:element name="personnes" type="personnesType"/>
<xs:element name="projets" type="projetsType"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>