Listing du fichier l2xml_6_tp1.php
00001 <?php
00002 # # (gH) -_- l2xml_6_tp1.php ; TimeStamp (unix) : 29 Juillet 2017 vers 20:02
00003 include("std.php") ;
00004 include("l2xml_6_inc.php") ;
00005
00006 $HTML = s_span("HTML" ,"grouge") ;
00007 $XHTML = s_span("XHTML","grouge") ;
00008 $XML = s_span("XML" ,"grouge") ;
00009 $DTD = s_span("DTD" ,"grouge") ;
00010 $XSD = s_span("XSD" ,"grouge") ;
00011 $CSS = s_span("CSS" ,"grouge") ;
00012 $JavaScript = s_span("JavaScript" ,"grouge") ;
00013
00014 debutPage("XML en L2","strict","","l2xml.js") ;
00015 debutSection() ;
00016 h1("$XML en L2, université d'Angers ") ;
00017 h2(s_nbsp(4).href("../","gilles.hunault@univ-angers.fr","gvert nou")) ;
00018 pvide() ;
00019 h2("T.P. numéro 1","gbleu") ;
00020 pvide() ;
00021
00022
00023 ###########################################################################################
00024
00025 $tableauDesRubriques = array() ;
00026 $idr = 0 ;
00027 $idr++; $tableauDesRubriques[$idr] = "Rendre un document $HTML valide pour la grammaire $XHTML 1.0 Strict" ;
00028 $idr++; $tableauDesRubriques[$idr] = "Passer de XHTML 1.0 Transitionnel à $XHTML 1.0 Strict" ;
00029 $idr++; $tableauDesRubriques[$idr] = "Créer un document $XML qui respecte une grammaire $DTD" ;
00030 $idr++; $tableauDesRubriques[$idr] = "Créer un document $XML qui respecte une grammaire $XSD" ;
00031 $idr++; $tableauDesRubriques[$idr] = "Créer des grammaires $DTD et $XSD" ;
00032 $tdmCRLM = new tdm($tableauDesRubriques) ;
00033 $tdmCRLM->titre() ;
00034 $tdmCRLM->menu("oui","oui","nou") ;
00035
00036 pvide() ;
00037
00038 $numExo = 0 ;
00039 $numSerie = 1 ;
00040 direAfficherSolutions($numSerie) ;
00041 pvide() ;
00042
00043 ## -------------------------------------------------------------------------------------------
00044
00045 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Rendre un document HTML valide pour la grammaire XHTML 1.0 Strict
00046
00047 ## -------------------------------------------------------------------------------------------
00048
00049 blockquote() ;
00050
00051 p("texte") ;
00052 echo " Ce n'est pas parce qu'un navigateur affiche un document qu'il est valide. " ;
00053 echo " Corriger le document $HTML de l'archive ".href("l2xml_bad.zip") ;
00054 echo " pour qu'il soit valide pour la grammaire ".b("XHTML 1.0 Strict").". " ;
00055 echo " On pourra utiliser des outils Web ou en ligne de commande." ;
00056 finp() ;
00057
00058 solution($numExo,$numSerie) ;
00059
00060 p("texte") ;
00061 echo " Que ce soit à l'aide d'un outil Web comme " ;
00062 echo " le ".href("https://validator.w3.org/","W2C validator").", " ;
00063 echo " d'un outil intégré à ".b("Firefox")." comme " ;
00064 echo href("https://addons.mozilla.org/fr/firefox/addon/html-validator/","HTML Validator") ;
00065 echo " ou d'un outil en ligne de commande " ;
00066 echo " comme ".b("rxp").", ".b("xmllint")." ou ".b("xmlstarlet").", " ;
00067 echo " on trouve les erreurs suivantes :" ;
00068 finp() ;
00069
00070 ul() ;
00071
00072 debutli() ; p() ;
00073 echo " il manque la structure englobante ".b("html/head/body")." ;" ;
00074 finp() ; finli() ;
00075
00076 debutli() ; p() ;
00077 echo " il manque donc aussi l'élément ".b("title")." dans la partie ".b("head")." ;" ;
00078 finp() ; finli() ;
00079
00080 debutli() ; p() ;
00081 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>")." ;" ;
00082 finp() ; finli() ;
00083
00084 debutli() ; p() ;
00085 echo " toujours en ligne 4 l'entité ".b("&nbsp")." est mal écrite, il manque un point-virgule en fin d'entité ;" ;
00086 finp() ; finli() ;
00087
00088 debutli() ; p() ;
00089 echo " le lien pour Google est incorrect, il faut des guillemets autour de l'URL ;" ;
00090 finp() ; finli() ;
00091
00092 debutli() ; p() ;
00093 echo " le lien pour Google est un élément ".em(b("inline"))." et doit être inclus dans un élément de type ".b("boite") ;
00094 echo " comme par exemple un élément ".b("p")." ou ".b("div")."." ;
00095 finp() ; finli() ;
00096
00097 finul() ;
00098
00099 p("texte") ;
00100 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é." ;
00101 finp() ;
00102
00103
00104 p("texte") ;
00105 echo s_span(b("Remarque :"),"grouge") ;
00106 echo " une page Web peut comporter autre chose que du ".b("$HTML")." ; " ;
00107 echo " ainsi les erreurs ".b("$CSS")." et ".b("$JavaScript")." ne sont pas détectables via ces outils. " ;
00108 finp() ;
00109
00110 finsolution() ;
00111
00112 finblockquote() ;
00113
00114 ## -------------------------------------------------------------------------------------------
00115
00116 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Passer de XHTML 1.0 Transitionnel à XHTML 1.0 Strict
00117
00118 ## -------------------------------------------------------------------------------------------
00119
00120 blockquote() ;
00121
00122 p("texte") ;
00123 echo " Quelles sont les principales différences entre les grammaires ".b("XHTML 1.0 Transitionnel")." et ".b("XHTML 1.0 Strict")." ?" ;
00124 finp() ;
00125
00126 solution($numExo,$numSerie) ;
00127
00128 p("texte") ;
00129 echo " Comme le montre notre " ;
00130 echo href("../Webrd/cmpdtd_f.php","comparateur de grammaires $DTD").", " ;
00131 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").". " ;
00132 echo " Ce qui signifie qu'il faut utiliser plus de $CSS." ;
00133 finp() ;
00134
00135 p("texte") ;
00136 echo "On pourra lire l'article ".href("https://24ways.org/2005/transitional-vs-strict-markup","trans-vs-strict")." pour plus de détails." ;
00137 finp() ;
00138
00139 finsolution() ;
00140
00141 finblockquote() ;
00142
00143 ## -------------------------------------------------------------------------------------------
00144
00145 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer un document qui respecte une grammaire DTD
00146
00147 ## -------------------------------------------------------------------------------------------
00148
00149 blockquote() ;
00150
00151 p("texte") ;
00152 echo " Nous admettrons pour ce qui suit qu'une molécule est définie par une liste " ;
00153 echo " d'atomes avec le nom des atomes, leur notation et le nombre de ces atomes fournis en attributs. " ;
00154 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 " ;
00155 echo " et par l'atome de nom oxygène, de notation O et en nombre 1 (qui peut donc être omis)." ;
00156 echo " Après avoir lu soigneusement le fichier suivant nommé ".href("molecule_dtd.txt","molecule.dtd").", écrire un fichier ".b("eau.xml") ;
00157 echo " valide pour cette grammaire $DTD. On utilisera un outil en ligne de commande pour vérifier cette validité. " ;
00158 echo " On pourra ignorer les accents. " ;
00159 finp() ;
00160
00161 p() ;
00162 echo b("Fichier molecule.dtd :") ;
00163 finp() ;
00164
00165 pre_fichier("molecule.dtd","cadre") ;
00166
00167 solution($numExo,$numSerie) ;
00168
00169 p("texte") ;
00170 echo "Voici un fichier ".href("eau.xml")." possible :" ;
00171 finp() ;
00172
00173 pre_fichier("eau.xml","cadrebleu") ;
00174
00175 p("texte") ;
00176 echo "On peut vérifier la validité de ce fichier pour la grammaire ".href("molecule_dtd.txt","molecule.dtd")." via les commandes suivantes :" ;
00177 finp() ;
00178
00179 pre_fichier("molecule_sh1.txt","cadrejaune") ;
00180
00181 finsolution() ;
00182
00183 finblockquote() ;
00184
00185 ## -------------------------------------------------------------------------------------------
00186
00187 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer un document qui respecte une grammaire XSD
00188
00189 ## -------------------------------------------------------------------------------------------
00190
00191 blockquote() ;
00192
00193 p("texte") ;
00194 echo " On décide maintenant d'utiliser la grammaire ".href("molecule_xsd.txt","molecule.xsd")." suivante pour stocker les mêmes informations." ;
00195 finp() ;
00196
00197 p() ;
00198 echo b("Fichier molecule.xsd :") ;
00199 finp() ;
00200
00201 pre_fichier("molecule.xsd","cadre") ;
00202
00203 p("texte") ;
00204 echo " Ecrire un fichier ".b("eau2.xml") ;
00205 echo " valide pour cette grammaire $XSD. On utilisera un outil en ligne de commande pour vérifier cette validité." ;
00206 echo " Là encore, on pourra ignorer les accents. " ;
00207 finp() ;
00208
00209 solution($numExo,$numSerie) ;
00210
00211 p("texte") ;
00212 echo "Voici un fichier ".href("eau2.xml")." possible :" ;
00213 finp() ;
00214
00215 pre_fichier("eau2.xml","cadrebleu") ;
00216
00217 p("texte") ;
00218 echo "On peut vérifier la validité de ce fichier pour la grammaire ".href("molecule_xsd.txt","molecule.xsd")." via les commandes suivantes :" ;
00219 finp() ;
00220
00221 pre_fichier("molecule_sh2.txt","cadrejaune") ;
00222
00223
00224 finsolution() ;
00225
00226 finblockquote() ;
00227
00228 ## -------------------------------------------------------------------------------------------
00229
00230 $tdmCRLM->afficheRubrique("oui") ; $numExo++ ; # Créer des grammaires DTD et XSD"
00231
00232 ## -------------------------------------------------------------------------------------------
00233
00234 blockquote() ;
00235
00236 p("texte") ;
00237 echo " Disons qu'un trajet ferroviaire est représenté schématiquement " ;
00238 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. " ;
00239 echo " Ces informations sont éventuellement complétées, lorsqu'elles sont disponibles, par deux informations ".b("ts")." (pour ".em("time stamp")." en anglais) " ;
00240 echo " qui fournissent respectivement la date et heure de départ et la date et heure d'arrivée. " ;
00241 finp() ;
00242
00243 p("texte") ;
00244 echo " Voici un exemple de fichier $XML regroupant deux trajets, nommé ".href("trajets.xml")."." ;
00245 finp() ;
00246
00247 p() ;
00248 echo b("Fichier trajets.xml :") ;
00249 finp() ;
00250
00251 pre_fichier("trajets.xml","cadre") ;
00252
00253 p("texte") ;
00254 echo " Donner pour ce fichier ".b("trajets.xml") ;
00255 echo " une grammaire $DTD ".em("minimale et raisonnable") ;
00256 echo " qui permet de décrire les trajets ferroviaires puis une grammaire $XSD équivalente." ;
00257 finp() ;
00258
00259 solution($numExo,$numSerie) ;
00260
00261 p("texte") ;
00262 echo " On lira attentivement les fichiers ci-dessous. " ;
00263 finp() ;
00264
00265 p() ;
00266 echo b("Grammaire trajets.dtd :") ;
00267 finp() ;
00268
00269 pre_fichier("trajets.dtd","cadrejaune") ;
00270
00271 p() ;
00272 echo b("Grammaire trajets.xsd :") ;
00273 finp() ;
00274
00275 pre_fichier("trajets.xsd","cadrebleu") ;
00276
00277 p("texte") ;
00278 echo "Il existe des outils pour créer automatiquement des grammaires à partir d'exemples, comme par exemple " ;
00279 echo href("http://www.thaiopensource.com/relaxng/trang.html","trang","grouge").". " ;
00280 finp() ;
00281
00282 finsolution() ;
00283
00284 finblockquote() ;
00285
00286 ## -------------------------------------------------------------------------------------------
00287
00288 h2("Questions sans réponse écrite (donc venez en TP !)") ;
00289
00290 blockquote() ;
00291 ul() ;
00292 debutli() ; p("texte") ;
00293 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 " ;
00294 echo " des accents, que ce soit avec un encodage " ;
00295 echo href("https://www.alsacreations.com/astuce/lire/83-codages-ascii-latin1-etc.html","latin1") ;
00296 echo " ou " ;
00297 echo href("https://www.w3.org/International/questions/qa-changing-encoding.fr.html","UTF")." ?" ;
00298 finp() ; finli() ;
00299
00300 debutli() ; p("texte") ;
00301 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 " ;
00302 echo " valide pour la grammaire indiquée en début de document ?" ;
00303 finp() ; finli() ;
00304 /*
00305 debutli() ; p("texte") ;
00306 echo "" ;
00307 finp() ; finli() ;
00308
00309 debutli() ; p("texte") ;
00310 echo "" ;
00311 finp() ; finli() ;
00312 */
00313 debutli() ; p("texte") ;
00314 echo "Après avoir vérifié qu'un document " ;
00315 echo s_span("DOCX","grouge") ;
00316 echo " ou " ;
00317 echo s_span("ODT","grouge") ;
00318 echo " est une archive (lisible par exemple par ".b("zip")."), chercher comment on peut lister tous les espaces de noms " ;
00319 echo " associés. Où trouve-t-on les grammaires pour ces documents ?" ;
00320 finp() ; finli() ;
00321
00322 finul() ;
00323 finblockquote() ;
00324
00325 ## -------------------------------------------------------------------------------------------
00326
00327 pvide() ;
00328
00329 ###########################################################################################
00330
00331 p() ;
00332 echo href("montresource.php?nomfic=l2xml_6_tp1.php","Code-source php de cette page","orange_stim nou")."." ;
00333 finp() ;
00334
00335 finSection() ;
00336 finPage() ;
00337 ?>
La coloration syntaxique est réalisée par un enrobage de la function php nommée highlight_file
mais si vous préférez, vous pouvez utiliser celle de SyntaxHighlighter ou même celle de geshi.
Pour ne pas voir les numéros de ligne, ajoutez &nl=non à la suite du nom du fichier.
Retour à la page principale de (gH)