1 Schémas XML - cours 1 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.

Slides:



Advertisements
Présentations similaires
Introduction à XSLT Éric Laporte Institut Gaspard-Monge
Advertisements

XML eXtensible Markup Language
Transformation de documents XML
DTD Sylvain Salvati
Introduction à XSLT Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.
1 Cours 5 Introduction aux schémas XML Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.
Cours MIAGE Henry Boccon-Gibod1 XML, langage de structuration Modélisation structurelle en XML de Messages et de Documents.
Cours MIAGE Henry Boccon-Gibod 1 Extensible Mark up Language Modélisation structurelle de Messages e t de Documents en XML XML Schema.
Les espaces de nommage XML par Philippe Poulard 1
Vocabulaire pour la passage du modèle conceptuel des données au modèle relationnel des données. MCDMRD EntitéTable PropriétésChamps, attribut IdentifiantClé
XML schema Objectifs Valider un doc. XML pour des contraintes syntaxiques Documenter un type de documents XML caractérisé par des contraintes Encadrer.
XHTML EXtensible HyperText Markup Language. HTML et XML HTML (HyperText Markup Language) et XML (eXtensible Markup Language) sont deux spécifications.
le langage les éléments
Le typage orienté objet pour les données XML
Domaines nominaux XSLT
Nicolas Singer Maître de conférence, université Champollion
version Beta Marie Calberg Ninni Louhelainen SLFN7
XML Un format d'échange et un langage de présentation des données associé au HTML.
Formulaire HTML Introduction. Définition de formulaire.
Adamou Mahamane Sidi Maman Bachir
Langage de structuration des données: XML
CPI/BTS 2 Programmation Web Introduction au PHP
17 octobre 2012 Grégory Petit
Xml/xslt : Extensible Stylesheet Language Transformation réalisé par: saÏd NAÏM.
Introduction à la structuration des documents: les techniques M2: Gestion des connaissances.
XML: Syntaxe XML, DTD et Schémas
Notions sur le XML Réfs : manuel p 149. Introduction Le XML (eXtensible Markup Language) est un standard d'échange de données. Il fait partie comme le.
Le langage Javascript pour le web
Introduction au XML Choopan Rattanapoka Université Louis-Pasteur, Starsbourg.
XSLT Langage de transformation darbre par Yves Bekkers.
Rappel (très) succint d’éléments techniques (XML, DTD, XSL, PHP)
STAF 2X XSL/FO Glaus & Ruckstuhl Mars © Glaus & Ruckstuhl TECFA Programme du 18 et 19 mars Revision XML Introduction à XSL/FO (intérêts et.
Schémas XML - cours 2 Éric Laporte Institut Gaspard-Monge
IFT 6800 Atelier en Technologies d’information
Les feuilles de style CSS
Initiation à XML Sebti Foufou.
Animateur : Med HAIJOUBI
8 - XML Cours XML.
Le Langage XML Belkhir Abdelkader Laboratoire LSI USTHB
1 Programmation Web II 2 ème année Licence Appliquée IAG Faculté des Sciences Economiques et de Gestion de Nableul Université 7 novembre à Carthage Années.
Le langage XHTML 420-S4W-GG Programmation Web Client
XML-schema. Pourquoi XML-schema Les DTD : Pas de typage, peu de contraintes sur les contenus nombre d'apparitions d'un élément à choisir entre 0 et 1.
LE HTML ISN Terminale S Un peu d’histoire …
JavaScript.
Le langage XML.
XPath XML Path UP Web Année universitaire
Les Schémas XML Le standard W3C.
Programmation Web : Introduction à XML
Programmation Web : Schémas XSD Jérôme CUTRONA 19:27:07 Programmation Web
Technologies web et web sémantique TP3 - XML. XML eXtensible Markup Language (langage extensible de balisage) – Caractéristiques: méta-langage = un langage.
Copyright © 2005 Yves MARCOUX1 Concepts XML de base Yves MARCOUX EBSI - Université de Montréal.
420-B63 Programmation Web Avancée Auteur : Frédéric Thériault 1.
SMIL Synchronized Multimedia Integration Language
MJ. Blin et M. CsernelPoleInfo31 XML et ses environnements Documents XML bien formés Prologue Arbre d'éléments Attributs Commentaires Entités internes.
IUT SRC Année 2004/2005Antonio Capobianco 1 HTML>Formater du texte>Les titres Définir les titres HTML distingue 6 niveaux de titre : Titre N°1 Titre N°2.
Introduction à XML Yves Bekkers. Plan Introduction - structurer l’information Les langages à balises - un peu d’histoire XML - concepts de base Outils.
Soutenance du mémoire de synthèse
Initiation au JavaScript
Module : Langage XML (21h)
Modélisation des documents: DTD et Schéma
1. Introduction 2. DTD 3. Schémas
XSD XML Schema Definition Année universitaire UP web.
eXtensible Markup Language. Généralités sur le XML.
Introduction à MathML Par Katia Larrivée UQO Le 18 mars 2004.
ACCARY-BARBIER / CNAM - Cycle C ère partie : Technologies XML  CHAPITRE 1 : XML et DTD  CHAPITRE 2 : Schémas XML  CHAPITRE 3 : XPath.
SOAP et les RPC XML SOAP WSDL RPC. Rappels sur le XML Langage avec des balises Très lisible Pour stocker des données Séparation entre contenu et présentation.
Philippe Gandy - 22 septembre 2015 Basé sur les notes de cours de Daniel Morin et Roch Leclerc.
XML : un métalangage pour la description de documents structurés XML a été défini par le consortium W3 en fonction de 2 objectifs: Compenser les limitations.
XML les données réellement portables La nécessité d’un format de données universel et lisible se faisait sentir depuis longtemps, aujourd’hui avec le développement.
INF2005– Programmation web– A. Obaid Variantes de HTML.
Transcription de la présentation:

1 Schémas XML - cours 1 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée

2 Sommaire XML 4 Premier schéma XML 23 Déclarer des attributs 42 Types simples 49 Référence à un schéma 65 Inclure des noeuds texte 67 Types complexes 69

3 4.XML 5.Contenu d'une base de données 6.Logiciels 7.Indentation 8.XML : autres exemples d'utilisation 9.Document texte structuré 10.Document et arbre 11.XHTML : visualisation sur écran 12.XSLFO : visualisation sur papier 13.Code : XSLT 14.XML bien formé 15.XML bien formé : éléments (1/3) 16.XML bien formé : éléments (2/3) 17.XML bien formé : éléments (3/3) 18.XML bien formé 19.Des grammaires en XML 20.Une DTD 21.Un schéma XML 22.DTD ou schéma XML ? 23.Un premier schéma (1/3) 24.Un premier schéma (2/3) 25.Un premier schéma (3/3) 26.Espaces de noms : à quoi ça sert (1/4) 27.Espaces de noms : à quoi ça sert (2/4) 28.Espaces de noms : à quoi ça sert (3/4) 29.Espaces de noms : à quoi ça sert (4/4) 30.Espaces de noms dans un schéma (1/2) 31.Espaces de noms dans un schéma (2/2) 32.Déclaration et référence 33.Types (1/2) 34.Types (2/2) 35.Validateurs 36.Schémas partiels (1/2) 37.Schémas partiels (2/2) 38.Une collection d'entrées (1/4) 39.Une collection d'entrées (2/4) 40.Une collection d'entrées (3/4) 41.Une collection d'entrées (4/4) 42.Déclarer un attribut (1/3) 43.Déclarer un attribut (2/3) 44.Déclarer un attribut (3/3) 45.Attribut sur un type simple (1/4) 46.Attribut sur un type simple (2/4) 47.Attribut sur un type simple (3/4) 48.Attribut sur un type simple (4/4) 49.Types simples 50.Types simples prédéfinis (1/5) 51.Types simples prédéfinis (2/5) 52.Types simples prédéfinis (3/5) 53.Types simples prédéfinis (4/5) 54.Types simples prédéfinis (5/5) 55.Liste balisée 56.Types simples dérivés : restriction 57.Restriction par 58.Restriction par énumération 59.Restriction par 60.Autres restrictions de types simples 61.Types simples dérivés : liste 62.Types simples dérivés : union (1/2) 63.Types simples dérivés : union (2/2) 64.Dérivations de types 65.Référence à un schéma XML (1/2) 66.Référence à un schéma XML (2/2) 67.Inclure des noeuds texte (1/2) 68.Inclure des noeuds texte (2/2) 69.Types complexes (1/3) 70.Types complexes (2/3) 71.Types complexes (3/3) Élément contenant un élément unique (1/2) 74.Élément contenant un élément unique (2/2) 75. (1/6) 76. (2/6) 77. (3/6) 78. (4/6) 79. (5/6) 80. (6/6)

4 XML Langage de balisage extensible (Extensible markup language, XML) Objectif Représenter des données dans un format à la fois - de type texte, vérifiable par des personnes - structuré, analysable par des logiciels - adaptable à de nouvelles utilisations Exemple : un catalogue de plantes

5 Contenu d'une base de données Bloodroot Sanguinaria canadensis 4 Mostly Shady Columbine

6 Logiciels Analyseurs XML Généralistes ou pour certains types de documents XML Éditeurs XML, éditeurs de code source Les documents XML sont traités comme du code source Navigateurs Les documents XML sont traités comme des pages web à visualiser Prétraitement automatique Ce qu'on visualise n'est pas le contenu du fichier

7 Indentation L'indentation facilite la visualisation en arbre Bloodroot Columbine Un document XML non indenté est illisible Bloodroot Columbine Pour des développeurs, l'indentation est une bonne pratique

8 XML : autres exemples d'utilisation Base de données sous format texte Exemples : catalogue de plantes, tableaux comptables... Document-texte structuré Texte et informations signalétiques, structurelles, liens... Exemple : XHTML Code Langages de script, grammaires... Exemple : schémas XML Autres CML : description de molécules et de réactions chimiques

9 La meilleure façon d'aborder un sujet complexe est parfois la simplicité. Un bon système de texte structuré est : commode riche... Document texte structuré

10 La meilleure façon d'aborder un sujet complexe est parfois la simplicité. Un bon système de texte structuré est : commode riche … listitem document commoderiche itemizedlist listitem La meilleure (...) para Document et arbre para emphasis. Un bon (...) simplicité

11 XHTML : visualisation sur écran Comme HTML mais bien formé et balises en minuscules <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> Strict DTD XHTML Example Please Choose a Day: Monday Tuesday Wednesday

12 XSLFO : visualisation sur papier (...)

13 Code : XSLT

14 XML bien formé "Bien formé" = qui respecte la syntaxe générale d'XML Certains logiciels ne traitent pas les documents mal formés : validateurs de schémas XML... D'autres sont tolérants : navigateurs... Toute balise ouverte doit être refermée Le document doit contenir un élément racine unique Les valeurs d'attributs doivent être entre guillemets ou entre apostrophes

15 XML bien formé : éléments (1/3) Élément Délimité par une balise ouvrante et une balise fermante 2.44 Ou réduit à une balise "vide" (élément vide) La balise fermante est obligatoire En HTML on peut omettre certaines balises fermantes

16 XML bien formé : éléments (2/3) Les éléments forment un arbre : disjoints, OK : imbriqués, OK : mal formé Deux éléments sont imbriqués ou disjoints : mal formé La différence majuscules/minuscules est significative La balise de début et de fin doivent correspondre 2.44 : mal formé Document --> arbre : analyse syntaxique Arbre --> document : sérialisation

17 XML bien formé : éléments (3/3) L'arbre doit avoir un élément racine unique Unweighted Weighted TWTA USCH EUR GRD USD Ce qu'il y a avant ou après ne doit pas être des éléments

18 XML bien formé Valeurs d'attributs entre guillemets ou entre apostrophes Déspécialiser les caractères " ou ' dans les valeurs d'attributs ""quotation mark '&apos;apostrophe : non

19 Des grammaires en XML Chaque type de document XML a sa syntaxe XHTML, XSLFO, XSLT, CML... et on peut en définir de nouveaux Grammaire Définit la syntaxe d'un type de document Exemple : DTD Grammaire en XML : schéma XML Un document est valide par rapport à une grammaire s'il respecte les contraintes en plus d'être bien formé

20 Une DTD <!ATTLIST resume filmref ID #REQUIRED realisateur CDATA #REQUIRED img CDATA #IMPLIED pdf CDATA #IMPLIED> (...)

21 Un schéma XML (...)

22 DTD ou schéma XML ? DTD Format très utilisé Relativement lisible Grammaire en SGML (ancien concurrent de XML) Compatible avec XML Schéma XML Grammaire en XML Permet d'engendrer du code Java Version simplifiée : Relax NG Possibilités de contrôle strict (ex. : entier entre 1 et 10)

23 Un premier schéma (1/3) Un document décrivant un objet avec ses champs 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file T15:24:23Z T14:09:55Z

24 Un premier schéma (2/3) Schéma correspondant <s:schema xmlns:s=" targetNamespace=" xmlns:aud=" (...)

25 Un premier schéma (3/3) (...) (...)

26 Espaces de noms : à quoi ça sert (1/4) <xsl:stylesheet xmlns:xsl=" xmlns:fo=" version="1.0" > <fo:simple-page-master master-name="first" margin-left="2cm" margin-right="2cm" margin-bottom="0.5cm" margin-top="0.75cm" page-width="21cm" page-height="29.7cm" > (...)

27 Espaces de noms : à quoi ça sert (2/4) Servent à éviter les conflits de noms entre éléments Le responsable d'un espace de noms garantit qu'il n'y a aucun conflit de noms à l'intérieur de l'espace Pour éviter les conflits entre éléments qui n'ont pas le même espace de noms, on déclare les espaces de noms Chaque espace de noms a un identificateur garanti unique (URI : universal resource identifier) Les noms étendus (URI + nom d'élément) sont garantis sans conflits

28 Espaces de noms : à quoi ça sert (3/4) Deux types de déclaration équivalentes Préfixe (souvent utilisé pour les schémas XML) xmlns:xsl=" Les éléments avec préfixe appartiennent à l'espace de noms Préfixe + nom = nom qualifié Espace de noms par défaut (souvent utilisé pour XHTML) xmlns=" Les éléments sans préfixe appartiennent automatiquement à l'espace de noms par défaut

29 Espaces de noms : à quoi ça sert (4/4) Le critère pour comparer deux espaces de noms est l'URI, et non le préfixe On déclare souvent les espaces de noms sur l'élément racine du document Une déclaration attachée à un élément vaut déjà pour cet élément Les déclarations sont héritées dans les éléments imbriqués Pour arrêter l'héritage d'une déclaration d'espace de noms par défaut : xmlns=""

30 Espaces de noms dans un schéma (1/2) - du schéma XML déclaré ici avec le préfixe s - du document XML cible, déclaré ici avec le préfice aud : c'est l'espace de noms des éléments du document cible décrits par le schéma On l'appelle l'espace de noms cible du schéma XML On le déclare dans le schéma XML deux fois : avec targetNamespace et avec xmlns et un préfixe <s:schema xmlns:s=" targetNamespace=" xmlns:aud="

31 Espaces de noms dans un schéma (2/2) Les éléments déclarés par fils de appartiennent automatiquement à l'espace de noms cible : pas de préfixe dans la déclaration En cas de référence à une déclaration, utiliser le préfixe Il faut donc déclarer l'espace de noms cible avec un préfixe <s:schema xmlns:s=" targetNamespace=" xmlns:aud="

32 Déclaration et référence On peut faire référence à un nom d'élément avant de le déclarer (...)

33 Types (1/2) Décrivent les contenus possibles d'un élément ou d'un attribut séquence d'éléments dans un ordre fixe Par défaut, minOccurs et maxOccurs valent 1

34 Types (2/2) type="s:integer" un noeud texte contenant un entier type="s:string" un noeud texte quelconque type="s:dateTime" date et heure au format ISO (...) 37 American Beauty - Theme (...) T15:24:23Z

35 Validateurs Validateur du W3C Si l'élément racine du document cible ne correspond à aucune déclaration globale (fille de s:schema), le validateur ne vérifie pas la syntaxe et produit le message : No declaration for document root found, validation was lax Exemple : le nom de l'élément racine correspond, mais pas l'espace de noms Autres validateurs Pas toujours aussi fiables que celui du W3C Altova : message moins trompeur The element declaration was not found for root element

36 Schémas partiels (1/2) Laisser des parties non spécifiées (...)

37 Schémas partiels (2/2) Déclarer un élément sans type Le validateur valide n'importe quoi à l'intérieur S'il reconnaît à l'intérieur un élément déclaré par ailleurs, il le valide en fonction de sa déclaration (...)

38 Une collection d'entrées (1/4) Une collection d'entrées avec des champs simples 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file T15:24:23Z T14:09:55Z

39 Une collection d'entrées (2/4) Schéma correspondant <s:schema xmlns:s=" targetNamespace=" xmlns:aud="

40 Une collection d'entrées (3/4) (...)

41 Une collection d'entrées (4/4) (...) (...)

42 Déclarer un attribut (1/3) On veut que l'élément Track puisse avoir un attribut (sans espace de noms) 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file

43 Déclarer un attribut (2/3) Le nom est déclaré sans préfixe Déclaration locale Les attributs doivent être déclarés après le contenu (...)

44 Déclarer un attribut (3/3) type="s:boolean"true, false, 1, 0 Pour que l'attribut soit obligatoire Par défaut, use="optional" Pour imposer une valeur Si l'attribut est présent, sa valeur doit être "euro" Même possibilité pour les éléments :

45 Attribut sur un type simple (1/4) Bloodroot Sanguinaria canadensis 4 Mostly Shady Columbine

46 Attribut sur un type simple (2/4)

47 Attribut sur un type simple (3/4)

48 Attribut sur un type simple (4/4) type="s:decimal" un noeud texte contenant un nombre en notation décimale (avec point : 2.44) : décrit les valeurs du noeud texte sous l'élément PRICE

49 Types simples Pour les noeuds qui contiennent du texte sans balises - un noeud de type texte - une valeur d'attribut type="s:string" un noeud texte quelconque American Beauty - Theme

50 Types simples prédéfinis (1/5) type="s:boolean" true, false, 1, 0 type="s:integer" 0, 15, -4, +15 type="s:decimal" 2.44, 15, -2.4, type="s:float" E23 Autres types numériques : double, long, short, int, byte... type="s:dateTime" T11:34:46Z type="s:date" type="s:time" 11:34:46Z type="s:gYear" 2008(dans le calendrier grégorien) type="s:gMonthDay" (tous les 26 septembre)

51 Types simples prédéfinis (2/5) Normalisation Les validateurs comparent la valeur trouvée dans le document avec la valeur imposée par le schéma Les validateurs normalisent certains types avant comparaison Exemple : s:token <s:attribute name="Kind" type="s:token" fixed="MPEG audio file"/> Le document est valide

52 Types simples prédéfinis (3/5) Normalisation type="s:string" pas de normalisation type="s:token" normalisation : remplacer toute suite de caractères blancs par 1 espace, et supprimer les espaces au début et à la fin type="s:boolean" true = 1, false = 0 type="s:integer" 15 = +15 type="s:decimal" 2.44 =

53 Types simples prédéfinis (4/5) Autres types texte normalisés type="s:NMTOKEN"Lettres, chiffres, [-_.:], mais pas d'espaces blancs type="s:Name"Même chose mais commence par une lettre ou [_:] type="s:QName"Comme Name avec au plus un [:] type="s:NCName"Comme Name mais sans [:] type="s:ID"Comme NCName mais unique dans le document Le validateur supprime les espaces au début et à la fin avant de comparer

54 Types simples prédéfinis (5/5) Types listes prédéfinis : NMTOKENS... Les chaînes de caractères sont séparées par des espaces Eschscholzia Papaver Sanguinaria Les types listes prédéfinis font concurrence à des listes balisées

55 Liste balisée Eschscholzia Papaver Sanguinaria

56 Types simples dérivés : restriction Restriction : le type dérivé est inclus dans le type de base

57 Restriction par Caractères spéciaux \ |. - ^ ? * + { } ( ) [ ] Classes de caractères Unicode \p{L} lettres\P{L} tout sauf les lettres \p{Lu} lettres majuscules\P{Lu} \p{IsBasicLatin} alphabet latin de base Ces codes sont utilisables à l'intérieur des [ ] Classes de caractères Perl \s espace, tabulation, fin de ligne\S autres car. \d chiffres de tous les alphabets\D autres car.

58 Restriction par énumération 38 All I Need Air Moon Safari Pop (...)

59 Restriction par Spécifie le traitement des caractères blancs à effectuer pour normaliser avant comparaison les caractères blancs au début et à la fin de la chaîne sont supprimés ; toute autre séquence de caractères blancs est remplacée par un seul espace chaque caractère blanc est remplacé par un espace aucun traitement avant validation

60 Autres restrictions de types simples minExclusive maxExclusive length maxLength minLength totalDigits (évalué sur la valeur logique)...

61 Types simples dérivés : liste Eschscholzia Papaver Sanguinaria Les chaînes de caractères sont séparées par des espaces

62 Types simples dérivés : union (1/2) Les éléments ZONE dans le catalogue de plantes contiennent des chaînes de types divers Annual (...) 4 (...) 3 - 5

63 Types simples dérivés : union (2/2) La seule façon d'inclure un type simple prédéfini dans une union est d'utiliser et

64 Dérivations de types extension (attributs) restriction, liste, union s:simpleType s:complexType s:simpleContent

65 Référence à un schéma XML (1/2) Les applications qui traitent le document cible doivent pouvoir le valider par rapport à un schéma Exemple : le validateur du W3C <Tracks xmlns:xsi=" xsi:schemaLocation=" xmlns=" 37 American Beauty - Theme Air american beauty soundtrack MPEG audio file

66 Référence à un schéma XML (2/2) L'espace de noms xsi spécifie des attributs utilisables dans les documents cibles La référence au schéma se fait par une valeur d'attribut qui contient d'abord l'espace de noms cible, puis l'URL du schéma séparée par un espace <Tracks xmlns:xsi=" xsi:schemaLocation=" xmlns="

67 Inclure des noeuds texte (1/2) Les plantes contiennent du texte de présentation non structuré Anemone Anemone blanda 6 Mostly Shady Bulbe rustique de la famille des renonculacées. FEUILLAGE : Feuilles très lobées vert foncé semi érigées HAUTEUR : 10 cm FLORAISON : Solitaire, dressée, en coupe aplatie au printemps SOL : Ordinaire bien drainé

68 Inclure des noeuds texte (2/2) Les plantes contiennent du texte de présentation non structuré (...) Inconvénients : ces noeuds texte peuvent apparaître n'importe où et on ne peut pas contrôler le contenu par des types simples

69 Types complexes (1/3) s:complexType et s:sequence permettent de spécifier des documents plus complexes que des collections d'entrées <iTunes xmlns:xsi=" xsi:schemaLocation=" xmlns=" file://localhost/C:/My%20Music/ B2BF2C09D305D49C 37 American Beauty - Theme

70 Types complexes (2/3) s:complexType et s:sequence peuvent être utilisés récursivement (...) (...)

71 Types complexes (3/3) s:sequence représente la concaténation dans un ordre fixe s:attribute ajoute un attribut Autres constructeurs de types complexes s:choiceun seul élément pris parmi plusieurs s:allchaque élément une seule fois, dans n'importe quel ordre

72

73 Élément contenant un élément unique (1/2) Bloodroot Sanguinaria canadensis 4 Mostly Shady La syntaxe des schémas XML interdit de placer s:element directement dans s:complexType

74 Élément contenant un élément unique (2/2) Intercaler s:sequence ou s:choice entre les deux

75 (1/6)

76 (2/6) Restrictions syntaxiques pas de récursivité possible ne peut contenir que des ne peut pas apparaître dans un,, Exemple : on veut que les champs ZONE et LIGHT puissent apparaître dans n'importe quel ordre

77 (3/6)

78 (4/6)

79 (5/6) Si on veut que ZONE, LIGHT et PRICE apparaissent dans n'importe quel ordre, ne marche pas - Choix entre 6 séquences de 3 éléments Illisible ! - Trop difficile pour le validateur Message d'erreur du validateur : non-deterministic content model Contrainte sur l'écriture des schémas XML : lors de l'analyse syntaxique d'un document cible, la correspondance avec le schéma doit pouvoir se faire de façon déterministe sans connaître les éléments qui suivent celui en train d'être analysé

80 (6/6) Solution : modifier la conception des documents cibles Exemple : insérer un élément conteneur Bloodroot Sanguinaria canadensis 4 Mostly Shady