INU3011 Documents structurés Cours 1 Hiver 2016 Copyright 2010-2016 Yves Marcoux - Reproduction interdite 1
Plan Introduction à XML En quoi ce cours peut vous être utile dans votre carrière? Contextes et historique de XML Notions syntaxiques XML de base Copyright 2010-2016 Yves Marcoux - Reproduction interdite 2
Introduction à XML XML est un ensemble de conventions servant à représenter de l information sous forme de fichier(s) informatique(s) de la manière la plus utile possible utile = versatile, rentable, réutilisable, etc. Copyright 2010-2016 Yves Marcoux - Reproduction interdite 3
Que peut-on peut faire avec XML? Quatre exemples (parmi des milliers) Œuvres de Carl Maria von Weber Lois canadiennes AquaBase.org* CV commun canadien N.B.: Le XML n est pas nécessairement visible par l utilisateur Copyright 2010-2016 Yves Marcoux - Reproduction interdite 4
XML est partout Montre d entraînement Juste pour voir, recherchez les fichiers nommés *.xml sur votre ordi surprise! Par exemple, dans C:\ProgramData Voir XML Essentials (1 ère lecture pour la semaine prochaine) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 5
XML par analogies Deux analogies: Bases de données Traitement de texte Copyright 2010-2016 Yves Marcoux - Reproduction interdite 6
Analogie 1: Base de données Copyright 2010-2016 Yves Marcoux - Reproduction interdite 7
Vue hiérarchique des mêmes données Employés Employé Employé... Employé no nom adresse... no nom adresse... no nom adresse... Copyright 2010-2016 Yves Marcoux - Reproduction interdite 8
En XML <Employés> <Employé> <no>1</no> <nom>roy, Lucie</nom> <adresse>1 rue Bray</adresse>... </Employé> <Employé> <no>2</no> <nom>bray, Luc</nom> <adresse>2 rue Roy</adresse>... </Employé>... </Employés> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 9
Analogie 2: Traitement de texte Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 10
Pour indiquer que c est un titre On sélectionne Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 11
Pour indiquer que c est un titre Puis on applique le style voulu Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 12
Pour indiquer l emphase On sélectionne Mes dernières vacances J ai mangé de la dinde, café, beaucoup de café! beaucoup de dinde, et j ai bu du Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 13
Pour indiquer l emphase Puis, on applique le style voulu Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 14
Pour indiquer l emphase Même chose pour l autre mot «beaucoup» Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 15
Pour la signature On sélectionne Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 16
Pour la signature Puis on applique le style voulu Mes dernières vacances J ai mangé de la dinde, beaucoup de dinde, et j ai bu du café, beaucoup de café! Le Goinfre Copyright 2010-2016 Yves Marcoux - Reproduction interdite 17
En XML Au lieu de sélectionner et d appliquer un style, on «marque» les bouts de texte avec des balises avant et après <titre>mes dernières vacances</titre> J ai mangé de la dinde, <emphase>beaucoup</emphase> de dinde, et j ai bu du café, <emphase>beaucoup</emphase> de café! <signature>le Goinfre</signature> Note: Ceci n est pas un document XML bien-formé, car il manque un élément de plus haut niveau. Copyright 2010-2016 Yves Marcoux - Reproduction interdite 18
En XML C est une «application XML» (un logiciel) qui s occupe, plus tard, d interpréter les balises et d appliquer les styles appropriés C est comme si on divisait le travail en deux: l auteur fournit le contenu et la structure (les balises) l application informatique interprète et formate Copyright 2010-2016 Yves Marcoux - Reproduction interdite 19
En quoi ce cours peut vous être utile dans votre carrière? Copyright 2010-2016 Yves Marcoux - Reproduction interdite 20
Raison 1 Omniprésence L information est de plus en plus disponible en XML (big data ou autre) Les chances que vous ayez à traiter de l information en XML sont très grandes Plus vous en connaissez sur XML, mieux vous serez en mesure de traiter adéquatement cette information Copyright 2010-2016 Yves Marcoux - Reproduction interdite 21
Raison 2 Modélisation Le design de tout système d information inclut une partie modélisation, qui détermine directement les traitements possibles XML = meilleur cadre possible pour comprendre l'impact des décisions de modélisation sur les traitements possibles Comprendre ce lien fera de vous un meilleur interlocuteur avec les équipes de développement, peu importent les technologies utilisées Copyright 2010-2016 Yves Marcoux - Reproduction interdite 22
Raison 3 Avant-gardisme Pour peu que vous œuvriez au sein d une organisation le moindrement avantgardiste, vous pourriez vous-même avoir à intervenir sur des systèmes XML: modélisation, traitement avec XSLT, publication sous différentes formes, bases de données XML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 23
Contextes et historique de XML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 24
Qu est-ce que XML? extensible Markup Language = Langage de balisage généralisable Définie par le W3C en février 1998 (v1.0) W3C = World Wide Web Consortium Format de documents numériques (c est-à-dire de fichiers informatiques) Format de documents structurés Format normalisé Copyright 2010-2016 Yves Marcoux - Reproduction interdite 25
Format de fichiers (ou de documents numériques) 1/3 Format = ensemble de conventions ou règles permettant d'interpréter correctement le contenu d'un fichier En réalité, on peut distinguer 2 niveaux: règles pour vérifier si le contenu d'un fichier a une forme acceptable = niveau formel (ou syntaxique, ou morphologique) conventions pour interpréter le contenu des fichiers dont la forme est effectivement acceptable = niveau sémantique Copyright 2010-2016 Yves Marcoux - Reproduction interdite 26
Format de fichiers (ou de documents numériques) 2/3 Exemples: Formats texte selon un jeu de caractères donné ASCII pur sur 8 bits Unicode-UTF-16-BE Word, PowerPoint PDF, SMIL, JPEG, MPEG, MP3, etc. Copyright 2010-2016 Yves Marcoux - Reproduction interdite 27
Format de fichiers (ou de documents numériques) 3/3 Exemple: texte ASCII pur sur 8 bits Niveau formel: Quels codes (de 8 bits) peuvent se trouver dans un fichier texte ASCII pur sur 8 bits? Niveau sémantique: À quels caractères ces codes correspondent-ils? Copyright 2010-2016 Yves Marcoux - Reproduction interdite 28
XML = format de documents structurés Un format utilisant le balisage par dessus un format texte (Unicode-UTF-8) Les documents XML sont aussi des fichiers texte Unicode-UTF-8 * Balises (à la <HTML>) identifient début et fin des éléments constitutifs du document Un exemple: un mémo *D autres jeux de caractères sont aussi possibles Copyright 2010-2016 Yves Marcoux - Reproduction interdite 29
Un mémo en XML <mémo> <auteur> Julia Royer </auteur> <destinataires> <nom> Jean Picard </nom> <nom> Émilie Dugré </nom> </destinataires> <sujet> Invitation </sujet> <corps> <para> Veuillez noter que la prochaine réunion du conseil d administration se tiendra le 27 septembre 2024. </para> <para> SVP, avisez-moi dans les plus brefs délais si vous ne pouvez pas y assister. </para> </corps> </mémo> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 30
mémo auteur destinataires sujet corps "Julia Royer" "Invitation" nom nom para para "Jean Picard" "Émilie Dugré" "Veuillez noter que... le 27 septembre 2024." "SVP, avisez-moi... pouvez pas y assister." Copyright 2010-2016 Yves Marcoux - Reproduction interdite 31
XML = format normalisé Recommandations du W3C de 1998 XML 1.0 1 e éd. février 1998 5 e éd. novembre 2008 XML 1.1 1 e éd. février 2004 2 e éd. septembre 2006 Ajouts mineurs par rapport à XML 1.0 Encore très peu utilisée Copyright 2010-2016 Yves Marcoux - Reproduction interdite 32
Préoccupations liées au format accessibilité le document est dans un format qui est compris par une communauté de lecteurs la plus grande possible pérennité le document demeurera accessible dans le futur réutilisabilité on peut récupérer un document archivé et continuer à travailler dessus pour créer un nouveau document des documents Copyright 2010-2016 Yves Marcoux - Reproduction interdite 33
Normalisation Un format normalisé a plus de chance de répondre à ces préoccupations qu un format non normalisé Spécifications et évolution non contrôlées par un seul producteur ou un petit groupe Copyright 2010-2016 Yves Marcoux - Reproduction interdite 34
Rappel: XML est partout Documents textuels (rapports, mémoires) Fiches, dossiers (médical, d employé) Métadonnées (MARC, RDDA, GILS) Formulaires, documents administratifs (PV) Communication savante (revues) Référence (dictionnaires, encyclopédies) Multimédia, hypermédia (présentations) etc. etc. Copyright 2010-2016 Yves Marcoux - Reproduction interdite 35
Quelques modèles XML «documentaires» très utilisés TEI (Text Encoding Initiative) http://www.tei-c.org/ DocBook http://www.docbook.org/ EAD (Encoded Archival Description) http://www.loc.gov/ead/ Journal Article Tag Suite http://dtd.nlm.nih.gov/ MARC21 http://www.loc.gov/standards/marcxml/ Copyright 2010-2016 Yves Marcoux - Reproduction interdite 36
Normes afférentes SGML (Standard Generalized Markup Language: ISO/IEC 8879:1986) Stylage: DSSSL, XSL, XSLT, XPath Web: HTML, XHTML, XForms Métadonnées: RDF Documents bureautiques: ODF, OOXML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 37
SGML = ISO/IEC 8879:1986 Standard Generalized Markup Language Plus complexe que XML; légèrement plus puissant Développé à partir de GML (1969), un produit d IBM GML = auteurs Goldfarb, Mosher, Lorie! Toutes les «saveurs» de HTML sont basées sur SGML, et non XML Sauf XHTML (basée sur XML) et HTML5 (basée ni sur SGML, ni sur XML) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 38
HTML (1/2) HTML = HyperText Markup Language Pourquoi «hypertexte»? Permet de créer des liens hypertextuels entre les documents C est une famille de formats Il existe plusieurs versions de HTML Toutes les versions (sauf XHTML et HTML5) sont des applications (i.e. des DTD) SGML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 39
HTML (2/2) Une des versions les plus utilisées est le «HTML 4.01» C est une recommandation du W3C du 24 décembre 1999 Il existe aussi (depuis 2000) une version du HTML normalisée par ISO/IEC C est la norme internationale ISO/IEC 15445:2000 Copyright 2010-2016 Yves Marcoux - Reproduction interdite 40
Historique du HTML HTML 1 : 1989 (texte, hyperliens) Inventé par Tim Berners-Lee, reconnu comme le créateur du Web HTML 2 : 1994 (images, formulaires) HTML 3 : 1996 (son, applets) HTML 4 : 1998 (vidéo, CSS) XHTML : 2000 HTML5 : 28 octobre 2014 (recom. W3C) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 41
XHTML (1/2) Extensible Hypertext Markup Language Version qui a succédé à HTML 4.01 au sein du W3C HTML 4 comme telle n est plus développée Essentiellement, c est une réécriture de HTML 4.01 comme application (i.e. DTD) XML, plutôt que SGML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 42
XHTML (2/2) XHTML 1.0 (2 e édition): Extensible HyperText Markup Language Recommandation W3C janvier 2000 (révisée en août 2002) "A Reformulation of HTML 4 in XML 1.0" XHTML 1.1: Module-based XHTML Recommandation W3C mai 2001 Introduit la possibilité d extensions modulaires (par exemple, XForms pour les formulaires) Encore peu répandue Copyright 2010-2016 Yves Marcoux - Reproduction interdite 43
Langages de balisage normalisés SGML simplification application (DTD) XML HTML (<5) application (DTD) ajustements mineurs XHTML Copyright 2010-2016 Yves Marcoux - Reproduction interdite 44
Formats bureautiques Office Open XML File Formats (OOXML) ISO/IEC 29500:2008 Office Open XML File Formats Filiation avec Microsoft Office Énorme polémique autour de son adoption Open Document Format for Office Applications (OpenDocument ou ODF) ISO/IEC 26300:2006 Open Document Format for Office Applications (OpenDocument) v1.0 Filiation avec le format natif de OpenOffice N.B.: Ces deux normes ISO sont disponibles gratuitement au <http://standards.iso.org/ittf/publiclyavailablestandards/> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 45
Notions syntaxiques XML de base Yves MARCOUX EBSI - Université de Montréal Copyright 2010-2016 Yves Marcoux - Reproduction interdite 46
Un document XML: d'abord un fichier texte <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Accès au dossier contenant les exemples de cette section Copyright 2010-2016 Yves Marcoux - Reproduction interdite 47
Déclaration XML (optionnelle) <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 48
Déclaration de type de documents (optionnelle) <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 49
Balises * de début parfois appelées «balises ouvrantes» <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO * Note: SYSTEM On entend "Memo-dtd1.dtd"> parfois «étiquette» au lieu de «balise» <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 50
Balises de fin parfois appelées «balises fermantes» <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 51
Identificateurs génériques <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 52
Spécification d'attribut <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 53
Nom d'attribut <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 54
Valeur d'attribut <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 55
Appels d'entité <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 56
Entités prédéfinies (1/2) Certains appels d entité permettent d utiliser comme texte les caractères normalement réservés au balisage: Appel Nom de l entité Caractère représenté < lower than < > greater than > & ampersand (en français, esperluette) & ' apostrophe ' " quotation mark " Ex.: B&G B&G Copyright 2010-2016 Yves Marcoux - Reproduction interdite 57
Entités prédéfinies (2/2) N.B.: Les deux seules entités prédéfinies vraiment essentielles sont & et < En effet: ' " > peuvent être inscrits directement comme contenu textuel dans un document XML Comme à peu près tous les autres caractères, incluant: /! : - _ $ % \?... et les lettres accentuées (é, ç, È, etc.) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 58
Entités caractères Une des deux formes suivantes: &#nnnnn; &#xhhhhh; où nnnnn et hhhhh représentent le numéro Unicode du caractère voulu: nnnnn hhhhh numéro Unicode en décimal numéro Unicode en hexadécimal Ex.: et désignent tous deux le symbole de l euro ( ) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 59
L esperluette (&) L esperluette (&) ne doit survenir que dans un appel d entité L utiliser dans n importe quel autre contexte constitue une erreur de bien-formé.* Ex.: recherche & développement Erreur : document mal formé *: sauf dans un commentaire, une section CDATA ou une instruction de traitement, voir plus loin Copyright 2010-2016 Yves Marcoux - Reproduction interdite 60
Exemple d'élément <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 61
Autre exemple d'élément <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 62
Commentaires (ignorés) <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <!-- <NOM>Émilie Dugré</NOM> --> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CC> <NOM>Luc Royer</NOM> <NOM>Jonas Dupras</NOM> </CC> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 63
Instructions de traitement <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <?xml-stylesheet href="unefeuille.css" type="text/css"?> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> Les instructions de traitement (processing instructions) <DESTINATAIRES> ressemblent à la déclaration XML, mais ne servent pas le <NOM COURRIEL="sp@picard.com">Sylvie même but et ne sont pas nécessairement Picard</NOM> situées au tout <NOM>Émilie début Dugré</NOM> du document XML. </DESTINATAIRES> <SUJET>Votre présence Elles servent nous tient à indiquer à cœur à certaines!</sujet> applications spécifiques <CC> des traitements particuliers (ici, elle indique à l application </CC> <CORPS> </CORPS> </MÉMO> <NOM>Luc de Royer</NOM> formater le document en utilisant une feuille de style donnée). <PAR>Veuillez Le nom noter après que le la "<?" prochaine s appelle réunion la cible du de CAl'instruction de se traitement. tiendra chez B&G le 27 septembre 2024.</PAR> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 64
Pseudo-attributs <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> Dans la déclaration XML (et dans certaines instructions <AUTEUR>Julia Royer</AUTEUR> de traitement), les paires: <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie nom="valeur" Picard</NOM> <NOM>Émilie Dugré</NOM> </DESTINATAIRES> sont appelées «pseudo-attributs». Ceux-ci ont la même <SUJET>Votre présence forme que nous les tient spécifications à cœur d attributs,!</sujet> mais comme ils <CC> ne sont pas dans des balises de début, ce ne sont pas <NOM>Luc véritablement Royer</NOM> des attributs, d où leur nom. <NOM>Jonas Dupras</NOM> </CC> Ici, dans la déclaration XML de l exemple, il y a deux <CORPS> pseudo-attributs (version et encoding). <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 65
Pseudo-attribut «encoding» dans la déclaration XML <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> Dans la déclaration XML, le pseudo-attribut «encoding» <AUTEUR>Julia Royer</AUTEUR> doit correspondre au jeu de caractères utilisé à la <DESTINATAIRES> sauvegarde du document XML en tant que fichier texte. <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> <NOM>Émilie Plusieurs Dugré</NOM> valeurs sont acceptées comme «encoding», </DESTINATAIRES> mais les deux plus fréquentes sont: <SUJET>Votre présence nous tient à cœur!</sujet> <CC> iso-8859-1 <NOM>Luc Royer</NOM> </CC> <CORPS> <NOM>Jonas et Dupras</NOM> UTF-8 <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> </CORPS> </MÉMO> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 66
Pseudo-attribut «encoding» dans la déclaration XML encoding="iso-8859-1" doit être spécifié si on a sauvegardé le fichier en ANSI Dans Bloc-notes: Copyright 2010-2016 Yves Marcoux - Reproduction interdite 67
Pseudo-attribut «encoding» dans la déclaration XML encoding="utf-8" doit être spécifié si on a sauvegardé le fichier en UTF-8 Dans Bloc-notes: Copyright 2010-2016 Yves Marcoux - Reproduction interdite 68
Sections CDATA (ou littérales) Si on a un passage avec beaucoup de caractères spéciaux, au lieu d utiliser un appel d entité prédéfinie pour chacun, on peut inclure le passage entre les délimiteurs <![CDATA[ et ]]> Une section CDATA «désactive» tous les caractères normalement réservés au balisage (y compris les délimiteurs de commentaires) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 69
Exemple avec section CDATA <?xml version="1.0" encoding="iso-8859-1"?> <!DOCTYPE MÉMO SYSTEM "Memo-dtd1.dtd"> <MÉMO> <AUTEUR>Julia Royer</AUTEUR> <DESTINATAIRES> <NOM COURRIEL="sp@picard.com">Sylvie Picard</NOM> </DESTINATAIRES> <SUJET>Votre présence nous tient à cœur!</sujet> <CORPS> <PAR>Veuillez noter que la prochaine réunion du CA se tiendra chez B&G le 27 septembre 2024.</PAR> <PAR>On parlera des balises <![CDATA[<MÉMO>, </SUJET> & </PAR>]]>.</PAR> </CORPS> </MÉMO> Autre exemple avec une section CDATA Copyright 2010-2016 Yves Marcoux - Reproduction interdite 70
Notes (1/6) En XML, toute balise de début doit obligatoirement avoir une balise de fin correspondante et le même identificateur générique doit figurer dans ces deux balises: <foo> </foo> «Fausse» exception : balises d élément vide (voir plus loin) Attention: En HTML, certaines balises de début n'ont pas de balises de fin correspondantes, ex.: <BR>, <HR> et <IMG>. Ce n est pas possible en XML (ni en XHTML)! Copyright 2010-2016 Yves Marcoux - Reproduction interdite 71
Notes (2/6) Un élément part d'une balise de début et va jusqu'à la balise de fin correspondante (inclusivement) Le contenu d'un élément est ce qu'il y a entre les balises de début et de fin de l'élément Un élément peut donc en contenir (imbriquer) d'autres Copyright 2010-2016 Yves Marcoux - Reproduction interdite 72
Notes (3/6) La casse des lettres (majuscules versus minuscules) est significative, notamment dans les identificateurs génériques, les noms d entités et les noms d attributs Ex.: <a> n est pas équivalent à <A> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 73
Notes (4/6) Un élément vide (c.-à-d. dont le contenu est vide) peut être représenté par une balise d'élément vide, qui est fait une contraction des balises de début et de fin de l'élément; exemple: <a/> est strictement équivalent à <a></a> Une balise d'élément vide peut, comme une balise de début, contenir une ou des spécifications d'attributs Copyright 2010-2016 Yves Marcoux - Reproduction interdite 74
Notes (5/6) Tout document XML doit avoir un unique élément de plus haut niveau (qui englobe, c.-à-d. contient, tous les autres éléments) Cet élément s appelle élément-racine ou élément-document On peut avoir plusieurs spécifications d attribut dans la même balise de début: <xref target="chap1" mode="tab">chapitre 1</xref> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 75
Notes (6/6) Mais on ne peut pas spécifier deux fois le même attribut dans une balise de début: MAL FORMÉ: <épicerie item="sucre" item="café"></épicerie> Un commentaire ne peut pas contenir deux tirets de suite! MAL FORMÉ: <!-- Attention aux "--"! --> Copyright 2010-2016 Yves Marcoux - Reproduction interdite 76
Règles sur les sections CDATA Une section CDATA peut survenir n importe où dans le contenu textuel d un élément (et seulement là) Elle ne peut pas se retrouver dans une valeur d attribut: mal formé <a b="<![cdata[&&]]>" /> En fait, une valeur d attribut ne peut jamais contenir directement le caractère "<" (mais peut contenir l appel d entité <) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 77
Instructions de traitement et commentaires Peuvent survenir à l intérieur de l'élémentdocument ou en dehors (avant * ou après) Si à l intérieur de l'élément-document: Ne peuvent survenir qu à l extérieur des balises (ne peuvent pas être imbriqués dans une balise) Ex.: <mémo <?a?> > *** MAL FORMÉ *** Ne sont pas considérés comme du contenu textuel (sont donc complètement ignorés en tant que contenu textuel) *Tout ce qui vient avant l'élément-document s'appelle le prologue du document Copyright 2010-2016 Yves Marcoux - Reproduction interdite 78
Instructions de traitement, commentaires et sections CDATA (1/2) Le "contenu" d'un commentaire, d'une instruction de traitement ou d une section CDATA, c.-à-d.: tout ce qui se trouve entre "<!--" et "-->" ou tout ce qui se trouve entre "<?" et "?>" ou tout ce qui est entre "<![CDATA[" et "]]>" n'est jamais interprété comme du balisage Copyright 2010-2016 Yves Marcoux - Reproduction interdite 79
Instructions de traitement, commentaires et sections CDATA (2/2) Exemples: <!-- Je vous dis <allo />! --> <?salut Je vous dis <allo />!?> <?MSdoc & R&D?> Dans ces exemples: Les chaînes "<allo />" ne sont pas des balises (même si elles en ont l'air) "&" n est pas un appel d entité "R&D" n est pas une erreur de bien-formé Copyright 2010-2016 Yves Marcoux - Reproduction interdite 80
Règles sur les noms XML (1/3) Ces règles s appliquent à tous les noms XML, c est-à-dire aux: Identificateurs génériques Noms d attributs Noms d entités Cibles d instructions de traitement Copyright 2010-2016 Yves Marcoux - Reproduction interdite 81
Règles sur les noms XML (2/3) Un nom XML: Ne peut contenir que: Des lettres, avec ou sans diacritiques Des chiffres Les caractères _. - Certains autres caractères, ex.: lettres non latines Pas d espace ou autres caractères spéciaux Doit commencer par une lettre ou _ (souligné) Copyright 2010-2016 Yves Marcoux - Reproduction interdite 82
Règles sur les noms XML (3/3) Le «:» est permis dans un nom XML, mais avec règles particulières Sert pour les espaces de nommage XML (XML namespaces), vus en fin de session Donc: Dans les documents XML que vous créez, utilisez des noms XML sans «:» Il n y aura pas de nom avec «:» dans les quiz Attendez-vous d en rencontrer: Dans certains exemples du cours Dans des documents XML dans la «vraie vie» Copyright 2010-2016 Yves Marcoux - Reproduction interdite 83