Valid XHTML     Valid CSS2    

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 
;
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   
;
00039     $numSerie 
;
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&nbsp;:" 
;
00068     finp
() ;
00069     
00070     ul
() ;
00071     
00072      debutli
() ; p() ;
00073       echo " il manque la structure englobante "
.b("html/head/body")."&nbsp;;" ;
00074      finp
() ; finli() ;
00075     
00076      debutli
() ; p() ;
00077       echo " il manque donc aussi l'élément "
.b("title")." dans la partie ".b("head")."&nbsp;;" ;
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("&lt;/p&gt;")." correspondant à son ".b("&lt;p&gt;")."&nbsp;;" ;
00082      finp
() ; finli() ;
00083     
00084      debutli
() ; p() ;
00085       echo " toujours en ligne 4 l'entité "
.b("&amp;nbsp")." est mal écrite, il manque un point-virgule en fin d'entité &nbsp;;" ;
00086      finp
() ; finli() ;
00087     
00088      debutli
() ; p() ;
00089       echo " le lien pour Google est incorrect, il faut des guillemets autour de l'URL  &nbsp;;" 
;
00090      finp
() ; finli() ;
00091     
00092      debutli
() ; p() ;
00093       echo " le lien pour Google est un élément "
.em(b("inline"))." et doit &ecirc;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&nbsp;:"),"grouge") ;
00106     echo " une page Web peut comporter autre chose que du "
.b("$HTML")."&nbsp;; " ;
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")."&nbsp;?" ;
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 &ecirc;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&nbsp;:") ;
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&nbsp;:" ;
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&nbsp;:" ;
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&ecirc;mes informations." ;
00195     finp
() ;
00196     
00197     p
() ;
00198     echo b
("Fichier molecule.xsd&nbsp;:") ;
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&nbsp;:" ;
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&nbsp;:" ;
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&nbsp;:") ;
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&nbsp;:") ;
00267     finp
() ;
00268     
00269     pre_fichier
("trajets.dtd","cadrejaune") ;
00270     
00271     p
() ;
00272     echo b
("Grammaire trajets.xsd&nbsp;:") ;
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&nbsp;!)") ;
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")."&nbsp;?" ;
00298       finp
() ; finli() ;
00299     
00300       debutli
() ; p("texte") ;
00301        echo "Est-ce qu'un navigateur peut &ecirc;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&nbsp;?" 
;
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&nbsp;?" 
;
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 gH    Retour à la page principale de   (gH)