La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 Introduction à XSLT - cours 4 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée.

Présentations similaires


Présentation au sujet: "1 Introduction à XSLT - cours 4 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée."— Transcription de la présentation:

1 1 Introduction à XSLT - cours 4 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée

2 2 Sommaire Regrouper des entrées4 Introduire des références12 Produire un index22 Extraire des informations d'un document mal structuré37 Rendre explicite une structure implicite44 Produire plusieurs documents en même temps52 Analyser du texte57

3 3 4. Objectifs 5. Grouper par albums (1/4) 6. Résultat 7. Grouper par albums (2/4) 8. Grouper par albums (3/4) 9. Grouper par albums (4/4) 10. Résultat 11. Paramètres du script XSLT (1/2) 12. Paramètres du script XSLT (2/2) 13. Introduire des références à d'autres entrées (1/5) 14. Résultat 15. Introduire des références à d'autres entrées (2/5) 16. Introduire des références à d'autres entrées (3/5) 17. Introduire des références à d'autres entrées (4/5) 18. Introduire des références à d'autres entrées (5/5) 19. Variante avec identifiants (1/3) 20. Variante avec identifiants (2/3) 21. Résultat 22. Variante avec identifiants (3/3) 23. Index des horaires de métro (1/7) 24. Index des horaires de métro (2/7) 25. Index des horaires de métro (3/7) 26. Index des horaires de métro (4/7) 27. Index des horaires de métro (5/7) 28. Index des horaires de métro (6/7) 29. Index des horaires de métro (7/7) 30. Expressions relatives 31. Expressions relatives 32. Axes Xpath (1/6) 33. Axes (2/6) 34. Axes (3/6) 35. Axes (4/6) 36. Axes (5/6) 37. Axes (6/6) 38. Extraction à partir d'un document mal structuré (1/7) 39. Extraction à partir d'un document mal structuré (2/7) 40. Extraction à partir d'un document mal structuré (3/7) 41. Extraction à partir d'un document mal structuré (4/7) 42. Extraction à partir d'un document mal structuré (5/7) 43. Extraction à partir d'un document mal structuré (6/7) 44. Extraction à partir d'un document mal structuré (7/7) 45. Donner une structure à un document "aplati" (1/7) 46. Donner une structure à un document "aplati" (2/7) 47. Donner une structure à un document "aplati" (3/7) 48. Donner une structure à un document "aplati" (4/7) 49. Donner une structure à un document "aplati" (5/7) 50. Donner une structure à un document "aplati" (6/7) 51. Donner une structure à un document "aplati" (7/7) 52. Résultat 53. Produire plusieurs documents (1/3) 54. Produire plusieurs documents (2/3) 55. Produire plusieurs documents (3/3) 56. Résultat : l'index 57. Résultat : le catalogue 58. Analyser du texte (1/2) 59. Analyser du texte (2/2)

4 4 Objectifs Réorganiser la structure d'un document XML Certains documents sont mal structurés (récupérés à partir de documents plats) Certains documents sont conçus pour un usage puis utilisés pour autre chose Ajouter des informations redondantes (exemple : un index alphabétique)

5 5 Grouper par albums (1/4) Regrouper les pistes qui appartiennent à un même album

6 6 Résultat file://localhost/C:/My%20Music/ B2BF2C09D305D49C 37 American Beauty - Theme Air MPEG audio file

7 7 Grouper par albums (2/4) select spécifie les noeuds à grouper group-by spécifie la clé de groupement : expression évaluée à partir de chacun des noeuds à grouper, puis convertie en valeur textuelle Si un noeud à grouper a plusieurs clés, il figurera dans plusieurs groupes S'il n'a pas de clé, il ne figurera dans aucun groupe

8 8 Grouper par albums (3/4) Le contenu de est exécuté une fois par groupe current-grouping-key() contient la clé courante current-group() contient les noeuds du groupe courant Le noeud courant est le premier noeud du groupe courant La liste de noeuds courante contient le premier noeud de chaque groupe

9 9 Grouper par albums (4/4) Si contient, cela classe les groupes les uns par rapport aux autres est exécuté une fois pour tous les groupes Les instructions qui le suivent au même niveau sont exécutées une fois par groupe Le noeud contexte dans le est le premier noeud de chaque groupe

10 10 Résultat file://localhost/C:/My%20Music/ B2BF2C09D305D49C 61 Rendez-Vouz Alpha Blondy Pop MPEG audio file

11 11 Paramètres du script XSLT (1/2) Paramétrer l'ordre alphabétique en fonction de la langue (...)

12 12 Paramètres du script XSLT (2/2) Déclaration en-dehors des règles L'attribut select (facultatif) donne la valeur par défaut Ligne de commande avec Saxon sous Windows > java -jar saxon8.jar -o par-album-param.xml iTunes.xml par-album-param.xsl lang=fr

13 13 Introduire des références à d'autres entrées (1/5) À la fin d'une entrée, ajouter des références aux autres plantes qui ont le même nom scientifique

14 14 Résultat Marsh Marigold Caltha palustris 4 Mostly Sunny Cowslip Cowslip Caltha palustris

15 15 Introduire des références à d'autres entrées (2/5) À chaque entrée, on parcourt toutes les autres... 2 e solution : dans le document source, on indexe les entrées par les noms scientifiques (...)

16 16 Introduire des références à d'autres entrées (3/5) CATALOG PLANT BOTANICALCOMMON Bloodroot Sanguinaria Canadensis PLANT... ZONELIGHT 4 Mostly Shady... noeud à indexer clé d'indexation

17 17 Introduire des références à d'autres entrées (4/5) CATALOG PLANT BOTANICALCOMMON Bloodroot Sanguinaria Canadensis PLANT... ZONELIGHT 4 Mostly Shady... noeud indexé clé d'indexation

18 18 Introduire des références à d'autres entrées (5/5) Spécification des noeuds à indexer (match) Fonctionne comme dans Spécification des clés d'indexation (use) Expression Xpath évaluée à partir du noeud à indexer Convertie en liste de chaîne de caractères Renvoie la liste des noeuds indexés par la clé Une clé peut indexer plusieurs noeuds

19 19 Variante avec identifiants (1/3) Utiliser les identifiants d'entrées pour les références Bloodroot Sanguinaria canadensis 4 Mostly Shady

20 20 Variante avec identifiants (2/3) (...)

21 21 Résultat Violet, Dog-Tooth Erythronium americanum 4 Shade Trout Lily Erythronium americanum 4

22 22 Variante avec identifiants (3/3) Un nom d'attribut sans préfixe n'appartient à aucun espace de noms, même s'il y a un espace de noms par défaut Pour reconnaître l'attribut, ne pas utiliser le préfixe d'espace de noms

23 23 Index des horaires de métro (1/7) ligne7.xml donne les horaires des premiers et derniers métros dans chaque station Faire un index des horaires 0:25 : La Courneuve - 8 Mai 1945 ; 0:27 : Fort d'Aubervilliers ; La Courneuve - 8 Mai 1945 ; 0:29 : Aubervilliers - Pantin - Quatre Chemins ; Fort d'Aubervilliers ; 0:31 : Aubervilliers - Pantin - Quatre Chemins ; Porte de La Villette ; 0:32 : Corentin Cariou ;

24 24 Index des horaires de métro (2/7) Indexer les par les horaires (...) Fort d'Aubervilliers 5:30 5:34

25 25 Index des horaires de métro (3/7) tbody tr td a Fort d'Aubervilliers tr... td 5:30... noeud à indexer clés d'indexation td 5:34

26 26 Index des horaires de métro (4/7) Indexer les par les horaires (...) (...) Fort d'Aubervilliers 5:30 5:34

27 27 Index des horaires de métro (5/7) Parcourir l'ensemble des heures

28 28 Index des horaires de métro (6/7) Pour une clé, parcourir les noeuds indexés par cette clé : ;

29 29 Index des horaires de métro (7/7) tr td a Fort d'Aubervilliers td 5:30... noeud à indexer clés d'indexation td 5:34

30 30.../*..

31 31 preceding::* following::* descendant::* ancestor::* self::* following-sibling::* preceding-sibling::* parent::* attribute::*

32 32 Axes Xpath (1/6) tr td a Fort d'Aubervilliers td 5:30... noeud à indexer clés d'indexation td 5:34

33 33 Axes (2/6) *[.=':']abréviation pour child::*[.=':']..[.=':'] parent::node()[.=':'].[.=':'] attribute::*[.=':'] node()[.=':'] child::node()[.=':'] */*[.=':'] child::*/child::*[.=':']../*[.=':'] parent::node()/child::*[.=':']../xh:td[.=':'] parent::node()/child::xh:td[.=':']../../*[.=':'] parent::node()/parent::node()/child::*[.=':']

34 34 Axes (3/6) Certaines expressions n'ont aucune abréviation possible parent::xh:tr[.=':']../xh:tr[.=':'] parent::node()/child::xh:tr[.=':'] parent::*[.=':'] following-sibling::*[.=':'] Chaque étape peut avoir un ou plusieurs prédicats *[.=':']/*child::*[.=':']/child::* *[.=':'][position()=1]/*child::*[.=':'][position()=1]/child::* L'expression * ne sélectionne que des éléments, sauf et attribute::*

35 35 Axes (4/6) Parenthésage interdit chapitre/section|chapitre/figureOK chapitre/(section|/figure)interdit descendant::*|self::*OK (descendant|self)::*interdit descendant-or-self::*OK ancestor-or-self::*OK

36 36 Axes (5/6) //*[.=':']/descendant-or-self::node()/child::*[.=':'] //xh:td[.=':'] /descendant-or-self::node()/child::xh:td[.=':'].//.[.=':'] self::node()/descendant-or-self::node()/self::node()[.=':']

37 37 Axes (6/6) Ordre d'une liste de noeuds Sert à évaluer position() Pour la plupart des axes Ordre du document [position()=1] sélectionne le premier noeud Pour les axes qui "remontent" dans le document (ancestor - preceding-sibling - preceding - ancestor-or-self) De droite à gauche [position()=1] sélectionne le noeud le plus à droite ou le plus bas dans l'arbre

38 38 Extraction à partir d'un document mal structuré (1/7) ligne7.xml est structuré pour la visualisation uniquement Extraire les missions des premiers et derniers trains (liste des stations avec les heures de passage)

39 39 Extraction à partir d'un document mal structuré (2/7) ligne7.xml est structuré pour la visualisation On va indexer les horaires par les noms des stations Place d'Italie 6:00 6:06 6:10 1:03 1:05

40 40 Extraction à partir d'un document mal structuré (3/7) Indexer les horaires par les noms des stations tr td a Fort d'Aubervilliers td 5:30... noeud à indexer clé d'indexation td 5:34

41 41 Extraction à partir d'un document mal structuré (4/7) Indexer les horaires par les noms des stations

42 42 Extraction à partir d'un document mal structuré (5/7) (...)

43 43 Extraction à partir d'un document mal structuré (6/7) Corentin Cariou Crimée Riquet Stalingrad Louis Blanc Château-Landon Gare de l'Est Poissonnière Cadet Le Peletier Chaussée d'Antin - La Fayette Résultat

44 44 Extraction à partir d'un document mal structuré (7/7) Un appel par noeud peut transmettre des paramètres (...) (...)

45 45 Donner une structure à un document "aplati" (1/7) Toutes les balises sont des éléments vides (sauf pour l'élément racine) Bloodroot Sanguinaria canadensis 4 Mostly Shady Columbine Aquilegia canadensis

46 46 Donner une structure à un document "aplati" (2/7) Structure du document "aplati" PLANT CATALOG COM BOTZONE PLANT Bloodroot Sanguinaria Canadensis 4

47 47 Donner une structure à un document "aplati" (3/7) Structure souhaitée PLANT CATALOG COM BOTZONE PLANT Bloodroot Sanguinaria Canadensis 4

48 48 Donner une structure à un document "aplati" (4/7) Méthode : créer des relations "clé/noeud indexé" qui correspondent aux futures relations "élément père/élément fils" PLANT CATALOG COM BOTZONE PLANT Bloodroot Sanguinaria Canadensis 4 clé noeud indexé

49 49 Donner une structure à un document "aplati" (5/7) Les clés sont des chaînes de caractères Utiliser les identifiants des noeuds PLANT CATALOG COM BOTZONE PLANT Bloodroot Sanguinaria Canadensis 4 clé noeud indexé

50 50 Donner une structure à un document "aplati" (6/7) (...)

51 51 Donner une structure à un document "aplati" (7/7)

52 52 Résultat Bloodroot Sanguinaria canadensis 4 Mostly Shady Columbine Aquilegia canadensis 3 Mostly Shady 9.37

53 53 Produire plusieurs documents (1/3) Un index alphabétique des plantes en XHTML avec des liens vers une 2 e page XHTML pour les entrées du catalogue (...) Plant Index

54 54 Produire plusieurs documents (2/3) Plant Catalog Plant Catalog

55 55 Produire plusieurs documents (3/3)

56 56 Résultat : l'index Plant Index Plant Index Adder's-Tongue Anemone

57 57 Résultat : le catalogue Plant Catalog Bloodroot Sanguinaria canadensis 4 Mostly Shady

58 58 Analyser du texte (1/2) Combien de fois "murder" apparaît-il dans bergman.xml ? occurrences

59 59 Analyser du texte (2/2) analyze-string découpe le texte en tokens correspondant et ne correspondant pas au motif donné On construit un arbre dans une constante On compte des noeuds dans l'arbre occurrences


Télécharger ppt "1 Introduction à XSLT - cours 4 Éric Laporte Institut Gaspard-Monge Université Paris-Est Marne-la-Vallée."

Présentations similaires


Annonces Google