Listing du fichier l2xml_6_tp1.php avec syntaxhighlighter
<?php # # (gH) -_- l2xml_6_tp1.php ; TimeStamp (unix) : 29 Juillet 2017 vers 20:02 include("std.php") ; include("l2xml_6_inc.php") ; $HTML = s_span("HTML" ,"grouge") ; $XHTML = s_span("XHTML","grouge") ; $XML = s_span("XML" ,"grouge") ; $DTD = s_span("DTD" ,"grouge") ; $XSD = s_span("XSD" ,"grouge") ; $CSS = s_span("CSS" ,"grouge") ; $JavaScript = s_span("JavaScript" ,"grouge") ; debutPage("XML en L2","strict","","l2xml.js") ; debutSection() ; h1("$XML en L2, université d'Angers ") ; h2(s_nbsp(4).href("../","gilles.hunault@univ-angers.fr","gvert nou")) ; pvide() ; h2("T.P. numéro 1","gbleu") ; pvide() ; ########################################################################################### $tableauDesRubriques = array() ; $idr = 0 ; $idr++; $tableauDesRubriques[$idr] = "Rendre un document $HTML valide pour la grammaire $XHTML 1.0 Strict" ; $idr++; $tableauDesRubriques[$idr] = "Passer de XHTML 1.0 Transitionnel à $XHTML 1.0 Strict" ; $idr++; $tableauDesRubriques[$idr] = "Créer un document $XML qui respecte une grammaire $DTD" ; $idr++; $tableauDesRubriques[$idr] = "Créer un document $XML qui respecte une grammaire $XSD" ; $idr++; $tableauDesRubriques[$idr] = "Créer des grammaires $DTD et $XSD" ; $tdmCRLM = new tdm($tableauDesRubriques) ; $tdmCRLM->titre() ; $tdmCRLM->menu("oui","oui","nou") ; pvide() ; $numExo = 0 ; $numSerie = 1 ; direAfficherSolutions($numSerie) ; pvide() ; ## ------------------------------------------------------------------------------------------- $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Rendre un document HTML valide pour la grammaire XHTML 1.0 Strict ## ------------------------------------------------------------------------------------------- blockquote() ; p("texte") ; echo " Ce n'est pas parce qu'un navigateur affiche un document qu'il est valide. " ; echo " Corriger le document $HTML de l'archive ".href("l2xml_bad.zip") ; echo " pour qu'il soit valide pour la grammaire ".b("XHTML 1.0 Strict").". " ; echo " On pourra utiliser des outils Web ou en ligne de commande." ; finp() ; solution($numExo,$numSerie) ; p("texte") ; echo " Que ce soit à l'aide d'un outil Web comme " ; echo " le ".href("https://validator.w3.org/","W2C validator").", " ; echo " d'un outil intégré à ".b("Firefox")." comme " ; echo href("https://addons.mozilla.org/fr/firefox/addon/html-validator/","HTML Validator") ; echo " ou d'un outil en ligne de commande " ; echo " comme ".b("rxp").", ".b("xmllint")." ou ".b("xmlstarlet").", " ; echo " on trouve les erreurs suivantes :" ; finp() ; ul() ; debutli() ; p() ; echo " il manque la structure englobante ".b("html/head/body")." ;" ; finp() ; finli() ; debutli() ; p() ; echo " il manque donc aussi l'élément ".b("title")." dans la partie ".b("head")." ;" ; finp() ; finli() ; debutli() ; p() ; echo " le deuxième paragraphe qui commence en ligne 4 n'est pas fermé car il n'y a pas de ".b("</p>")." correspondant à son ".b("<p>")." ;" ; finp() ; finli() ; debutli() ; p() ; echo " toujours en ligne 4 l'entité ".b("&nbsp")." est mal écrite, il manque un point-virgule en fin d'entité ;" ; finp() ; finli() ; debutli() ; p() ; echo " le lien pour Google est incorrect, il faut des guillemets autour de l'URL ;" ; finp() ; finli() ; debutli() ; p() ; echo " le lien pour Google est un élément ".em(b("inline"))." et doit être inclus dans un élément de type ".b("boite") ; echo " comme par exemple un élément ".b("p")." ou ".b("div")."." ; finp() ; finli() ; finul() ; p("texte") ; echo "La page ".href("l2xml_ok.html")." contient une version corrigée de la page et avec une indication explicite du jeu de caractères utilisé." ; finp() ; p("texte") ; echo s_span(b("Remarque :"),"grouge") ; echo " une page Web peut comporter autre chose que du ".b("$HTML")." ; " ; echo " ainsi les erreurs ".b("$CSS")." et ".b("$JavaScript")." ne sont pas détectables via ces outils. " ; finp() ; finsolution() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Passer de XHTML 1.0 Transitionnel à XHTML 1.0 Strict ## ------------------------------------------------------------------------------------------- blockquote() ; p("texte") ; echo " Quelles sont les principales différences entre les grammaires ".b("XHTML 1.0 Transitionnel")." et ".b("XHTML 1.0 Strict")." ?" ; finp() ; solution($numExo,$numSerie) ; p("texte") ; echo " Comme le montre notre " ; echo href("../Webrd/cmpdtd_f.php","comparateur de grammaires $DTD").", " ; echo " ce sont surtout les éléments ".b("font").", ".b("iframe")." et ".b("center")." qui ne sont plus admis en ".b("XHTML 1.0 Strict").". " ; echo " Ce qui signifie qu'il faut utiliser plus de $CSS." ; finp() ; p("texte") ; echo "On pourra lire l'article ".href("https://24ways.org/2005/transitional-vs-strict-markup","trans-vs-strict")." pour plus de détails." ; finp() ; finsolution() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer un document qui respecte une grammaire DTD ## ------------------------------------------------------------------------------------------- blockquote() ; p("texte") ; echo " Nous admettrons pour ce qui suit qu'une molécule est définie par une liste " ; echo " d'atomes avec le nom des atomes, leur notation et le nombre de ces atomes fournis en attributs. " ; echo " Par exemple la molécule d'eau ".b("H".sub("2")."O")." est définie par l'atome de nom hydrogène, de notation H en nombre 2 " ; echo " et par l'atome de nom oxygène, de notation O et en nombre 1 (qui peut donc être omis)." ; echo " Après avoir lu soigneusement le fichier suivant nommé ".href("molecule_dtd.txt","molecule.dtd").", écrire un fichier ".b("eau.xml") ; echo " valide pour cette grammaire $DTD. On utilisera un outil en ligne de commande pour vérifier cette validité. " ; echo " On pourra ignorer les accents. " ; finp() ; p() ; echo b("Fichier molecule.dtd :") ; finp() ; pre_fichier("molecule.dtd","cadre") ; solution($numExo,$numSerie) ; p("texte") ; echo "Voici un fichier ".href("eau.xml")." possible :" ; finp() ; pre_fichier("eau.xml","cadrebleu") ; p("texte") ; echo "On peut vérifier la validité de ce fichier pour la grammaire ".href("molecule_dtd.txt","molecule.dtd")." via les commandes suivantes :" ; finp() ; pre_fichier("molecule_sh1.txt","cadrejaune") ; finsolution() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer un document qui respecte une grammaire XSD ## ------------------------------------------------------------------------------------------- blockquote() ; p("texte") ; echo " On décide maintenant d'utiliser la grammaire ".href("molecule_xsd.txt","molecule.xsd")." suivante pour stocker les mêmes informations." ; finp() ; p() ; echo b("Fichier molecule.xsd :") ; finp() ; pre_fichier("molecule.xsd","cadre") ; p("texte") ; echo " Ecrire un fichier ".b("eau2.xml") ; echo " valide pour cette grammaire $XSD. On utilisera un outil en ligne de commande pour vérifier cette validité." ; echo " Là encore, on pourra ignorer les accents. " ; finp() ; solution($numExo,$numSerie) ; p("texte") ; echo "Voici un fichier ".href("eau2.xml")." possible :" ; finp() ; pre_fichier("eau2.xml","cadrebleu") ; p("texte") ; echo "On peut vérifier la validité de ce fichier pour la grammaire ".href("molecule_xsd.txt","molecule.xsd")." via les commandes suivantes :" ; finp() ; pre_fichier("molecule_sh2.txt","cadrejaune") ; finsolution() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer des grammaires DTD et XSD" ## ------------------------------------------------------------------------------------------- blockquote() ; p("texte") ; echo " Disons qu'un trajet ferroviaire est représenté schématiquement " ; echo " mais obligatoirement par un numéro identifiant de trajet, un type de train, un lieu de départ et un lieu d'arrivée. " ; echo " Ces informations sont éventuellement complétées, lorsqu'elles sont disponibles, par deux informations ".b("ts")." (pour ".em("time stamp")." en anglais) " ; echo " qui fournissent respectivement la date et heure de départ et la date et heure d'arrivée. " ; finp() ; p("texte") ; echo " Voici un exemple de fichier $XML regroupant deux trajets, nommé ".href("trajets.xml")."." ; finp() ; p() ; echo b("Fichier trajets.xml :") ; finp() ; pre_fichier("trajets.xml","cadre") ; p("texte") ; echo " Donner pour ce fichier ".b("trajets.xml") ; echo " une grammaire $DTD ".em("minimale et raisonnable") ; echo " qui permet de décrire les trajets ferroviaires puis une grammaire $XSD équivalente." ; finp() ; solution($numExo,$numSerie) ; p("texte") ; echo " On lira attentivement les fichiers ci-dessous. " ; finp() ; p() ; echo b("Grammaire trajets.dtd :") ; finp() ; pre_fichier("trajets.dtd","cadrejaune") ; p() ; echo b("Grammaire trajets.xsd :") ; finp() ; pre_fichier("trajets.xsd","cadrebleu") ; p("texte") ; echo "Il existe des outils pour créer automatiquement des grammaires à partir d'exemples, comme par exemple " ; echo href("http://www.thaiopensource.com/relaxng/trang.html","trang","grouge").". " ; finp() ; finsolution() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- h2("Questions sans réponse écrite (donc venez en TP !)") ; blockquote() ; ul() ; debutli() ; p("texte") ; echo "Que faut-il changer dans les fichiers $XML et dans les grammaires $DTD et $XSD précédentes si on décide d'utiliser " ; echo " des accents, que ce soit avec un encodage " ; echo href("https://www.alsacreations.com/astuce/lire/83-codages-ascii-latin1-etc.html","latin1") ; echo " ou " ; echo href("https://www.w3.org/International/questions/qa-changing-encoding.fr.html","UTF")." ?" ; finp() ; finli() ; debutli() ; p("texte") ; echo "Est-ce qu'un navigateur peut être ".b("validant")." c'est-à-dire refuser l'affichage d'un document $XML s'il n'est pas " ; echo " valide pour la grammaire indiquée en début de document ?" ; finp() ; finli() ; /* debutli() ; p("texte") ; echo "" ; finp() ; finli() ; debutli() ; p("texte") ; echo "" ; finp() ; finli() ; */ debutli() ; p("texte") ; echo "Après avoir vérifié qu'un document " ; echo s_span("DOCX","grouge") ; echo " ou " ; echo s_span("ODT","grouge") ; echo " est une archive (lisible par exemple par ".b("zip")."), chercher comment on peut lister tous les espaces de noms " ; echo " associés. Où trouve-t-on les grammaires pour ces documents ?" ; finp() ; finli() ; finul() ; finblockquote() ; ## ------------------------------------------------------------------------------------------- pvide() ; ########################################################################################### p() ; echo href("montresource.php?nomfic=l2xml_6_tp1.php","Code-source php de cette page","orange_stim nou")."." ; finp() ; finSection() ; finPage() ; ?>La coloration syntaxique est réalisée par : SyntaxHighlighter.
Si vous préférez, vous pouvez utiliser celle de geshi ou même celle construite autour de la fonction highlight_file.
Retour à la page principale de (gH)