Valid XHTML     Valid CSS2    

Développement Web et représentation de données :

Technologie XML, DTD, XSD et XSL ;

applications à la bureautique et à la bioinformatique

Exercices corrigés, série 1 : structuration XML

                     gilles.hunault "at" univ-angers.fr

 

Table des matières cliquable

  1. Installation des outils logiciels

  2. Structuration de services

  3. Structuration de personnes, VCARD et XCARD

  4. Structuration de séquences Fasta

  5. Structuration de personnes et de services

  6. Formats XML usuels en bureautique

  7. Formats XML usuels en bioinformatique

  8. Bases de données et XML ; espaces de noms

  9. Dessins et rendus XML

10. Lecture de fichiers XML sur Internet et logiciel R

11. Questions diverses

 

Il est possible d'afficher toutes les solutions via ?solutions=1 et de les masquer avec ?solutions=0.

 

1. Installation des outils logiciels

Installer sous Linux les outils en ligne de commande nommés recode, rxp, xmllint, xmlstarlet, xsltproc puis les modules XML::Parser, XML::Checker, XML::SAX, XML::Validator::Schema et XML::XSLT pour perl.

Où sont les pages d'aides associées ?

Vérifier que le script demoXml fourni dans l'archive demoXml.zip fournit les mêmes résultats que dans le listing de sortie demoXml.txt et que vous comprenez les affichages. On pourra essayer de retenir les principales options des outils en ligne de commande. On utilisera bien sûr les fichiers suivants :

Fichier Explications
dbf.xml fichier xml bien formé
dmf.xml fichier xml mal formé
adv.xml fichier xml valide pour la grammaire id.dtd
adn.xml fichier xml invalide pour la grammaire id.dtd
id.dtd fichier grammaire de type dtd
axv.xml fichier xml valide pour la grammaire id.xsd
axn.xml fichier xml invalide pour la grammaire id.xsd
id.xsd fichier grammaire de type xsd (schéma)
cours.xml fichier xml auquel appliquer la transformation .xsl
cours.xsl fichier xml qui est une transformation xsl

Ecrire un script iso2utf et un script utf2iso pour convertir les accents à l'aide de recode (plutôt que iconv).

Tester ces scripts avec les fichiers accentsIso.txt, accentsHtml.txt et accentsUtf.txt. Un fichier plus complet en iso est allcharIso.txt.

Solution :  

 

2. Structuration de services

On veut modéliser des services dans une entreprise comme Achats, Direction, Courrier... Ecrire le fichier serv00.xml défini à l'aide des seuls éléments services et service ; les noms de services seront intégrés comme des contenus-texte d'éléments. Comment vérifier que le fichier est bien formé ? Ajouter le service Représentation après avoir remarqué qu'il y a un caractère accentué. On nommera serv01.xml le fichier avec accent.

Ecrire le fichier serv02.xml défini à l'aide des éléments services et service et du sous-élément nomDeService dont le contenu-texte est un nom de service puis écrire le fichier serv03.xml défini à l'aide des éléments services et service et de l'attribut nomDeService.

On décide maintenant d'ajouter un identifiant de service (comme pour une base de données). Faut-il utiliser l'initiale des services ou un entier auto-incrémenté ? Si on nomme numService cette donnée, comment l'implémenter ? Vous écrirez dans serv04.xml à partir de serv02.xml la solution avec sous-élément et dans serv05.xml la solution avec attribut. Y a-t-il pour l'instant une meilleure solution ?

Solution :  

 

3. Structuration de personnes, VCARD et XCARD

On admettra qu'on peut définir sommairement une personne par un nom, un prénom et une ddn (date de naissance) que l'on réduira pour l'instant à une année de naissance. Ecrire, à partir des éléments personnes et personne dans le fichier pers01.xml une solution tout élément puis dans pers02.xml une solution tout attribut. Enfin, écrire dans pers03.xml une solution «panachée» où nom et prénom sont des éléments et où ddn est un attribut.

On insérera les personnes Isabelle DUPUIS, née en 1965, Jean DUPONT, né en 1963, Jack DUPONT, né en 1968.

Peut-on avoir à la fois un élément ddn et un attribut ddn ?

Y a-t-il une structuration meilleure qu'une autre pour cet exemple ?

Qu'est-ce que XCARD ? Quel rapport avec VCARD et XML ? Que sont RFC-6350 et RFC-63511 ?

Solution :  

 

4. Structuration de séquences Fasta

Une séquence Fasta traditionnelle se compose d'un identifiant comme 1YYCA et d'une suite d'acides aminés comme VKGFFAECKLA ou de nucléotides comme TATAAGCCTGCCAAGC. On se restreint pour ce qui suit aux protéines (définies comme des suites d'acides aminés). Si on nomme id et aa les données, comment structurer dans un fichier XML ces informations ? On pourra utiliser le fichier texte fasta_xmp.txt pour constituer un fichier XML de 3 séquences Fasta.

Que peut-on ajouter comme aide à la vérification ? Sous quelle forme, élément ou attribut ?

Solution :  

 

5. Structuration de personnes et de services

Ecrire dans agence01.xml une solution tout élément qui intégre un fichier XML de personnes (auquel on aura ajouté un numéro de service nommé numService) et un fichier XML de services puis fournir dans agences02.xml une solution tout attribut. On pourra utiliser pers06.xml et serv06.xml pour constituer agences01.xml puis pers07.xml et serv07.xml pour constituer agences02.xml.

Solution :  

 

6. Formats XML usuels en bureautique

Dans quelle mesure peut-on dire qu'un fichier-archive, une base de données et un fichier XML sont des conteneurs ?

Ecrire le texte «Bon courage à tous et à toutes» -- exactement comme cela, avec courage en gras, tous en bleu et toutes en gras et bleu foncé -- dans un fichier Word au format DOCX, puis au format RTF ; écrire le même texte dans un fichier Libre Office au format Texte ODT. Si ce sont des fichiers XML, pourquoi ne peut-on pas les ouvrir directement avec un éditeur de texte ? A quoi correspond le format .FODT ?

Reprendre avec les informations ci-dessous (fichier tableur_data.txt) qu'on mettra dans les cellules d'un tableur, qu'on sauvegardera au format XLSX, CSV et Classeur ODS :


     Iden       Longueur
     1906384B   110
     1YYCA      174
     A2XG55     33
     

Solution :  

 

7. Formats XML usuels en bioinformatique

Le NCBI est un institut national américain qui fournit de nombreuses ressources en bioinformatique. Cherchez sur la page principale du site dans la base de données des protéines, le mot AAA18335 puis le mot 424143. Comment est affichée la séquence en acides aminés de la protéine correspondante ?

Afin d'éviter d'encombrer les serveurs, le NCBI propose un script pour accéder aux protéines nommé efetch. Après avoir lu la documentation correspondante, trouvez la syntaxe associée à la demande du fichier XML complet («Genpept») pour la protéine précédente. Comment est stockée la séquence en acides aminés de la protéine correspondante ? Et si on se focalise sur la séquence Fasta (via le format «TinySeq»), que faut-il changer au niveau du script ?

UNIPROT est un un autre centre international dédié à la bioinformatique. Cherchez la protéine précédente dans la base de connaissances des protéines. Comment fait-on pour voir le fichier XML correspondant ? Comment est stockée la séquence en acides aminés de la protéine correspondante ? A quoi correspond le format RDF proposé en haut et à droite du format XML dans la page Web de visualisation de la protéine ?

Solution :  

 

8. Bases de données et XML ; espaces de noms

Peut-on facilement exporter une base de données MySQL en XML ?

Application : exporter la base GESTION qui contient les 4 tables FOUR, CLI, ART et CMD de notre tuteur MySql. Un script qui permet de recréer les tables et leur contenu est BD_gestion_mysql.

On peut imaginer qu'une mauvaise conception d'une base de données ait abouti à un champ NOM pour le nom d'un fournisseur, à un champ NOM pour le nom d'un client et à un champ NOM pour le nom d'un article. Si on veut que ces trois noms soient désignés de façon différente, trouver une solution avec des attributs qui conserve la désignation <NOM> puis montrer comment les notions de namespace et de XML namespace permettent de «bien» gérer cette mauvaise conception. On pourra, pour tester la solution, utilisera comme point de départ le fichier de test noms.xml.

Solution :  

 

9. Dessins et rendus XML

On structure un dessin 2D élémentaire selon les règles suivantes. Un dessin est un cercle, un rectangle ou un triangle. Un cercle est défini par un centre et un rayon, un rectangle par son csg (coin supérieur gauche), une longueur et une largeur, un triangle par trois points. Chaque élément graphique peut avoir une couleur parmi les mots prédéfinis bleu, rouge, jaune. Ecrire un fichier dessin.xml qui dans un viewport bleu de 500 pixels de large et 300 de haut, met un "soleil" jaune de rayon 15 pixels en (450,50), une plage rectangulaire verte qui fait toute la largeur et qui fait 100 pixels de haut. Pour les plus fort(e)s, rajouter une petite étoile de mer rouge en bas à gauche à l'aide de trois triangles bien choisis. A défaut, on placera juste un triangle plein et en rouge. On pourra s'inspirer du dessin ci-dessous et de la syntaxe SVG.

                              non su

Ecrire ensuite la "vraie" version en SVG de ce dessin.

Lister tous les éléments XML distincts utilisés dans le logo du renard ci-dessous, puis compter tous les éléments avec leurs attributs.

                              non su

Expliquer comment on obtient un rendu "propre et intéressant" des horaires de CELCAT par exemple pour les horaires de ce cours.

                              non su

Expliquer comment on obtient un affichage dynamique de données hiérarchiques avec Krona.

                              non su

 

Solution :  

 

10. Lecture de fichiers XML sur Internet et logiciel R

Parmi les logiciels vus en ligne de commande, lesquel(s) savent lire des fichiers sur internet via une URL ?

Après avoir parcouru l'introduction non élémentaire au logiciel R, est-ce que le logiciel R sait lire des fichiers sur internet via une URL ? Et des fichiers XML ?

Comment faire avec R pour récupérer le contenu d'un tableau dans une page Web ?

Solution :  

 

11. Questions diverses

Faut-il indenter les fichiers ?

Quel navigateur Web est le plus adapté à l'affichage de fichiers XML ?

Quels éditeurs peut-on utiliser pour XML, sous Linux, sous Windows ?

Qu'est-ce qu'une structure mixte ? Pourquoi faut-il éviter les structures mixtes ?

Une page Web est-elle un document XML ?

Une fichier RDF est-il un document XML ? Et une image SVG ?

Pourquoi s'intéresser plus à XML 1.0 qu'à XML 1.1 ? Quelles sont les différences ?

Est-ce que HTML5 est un langage basé sur XML ?

Solution :  

 

Archive des données, programmes et scripts.

 

Code-source php de cette page ; code javascript utilisé. Retour à la page principale du cours.

 

 

retour gH    Retour à la page principale de   (gH)