Valid XHTML     Valid CSS2    

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&nbsp;:" ;
        finp() ;
        
        ul() ;
        
         debutli() ; p() ;
          echo " il manque la structure englobante ".b("html/head/body")."&nbsp;;" ;
         finp() ; finli() ;
        
         debutli() ; p() ;
          echo " il manque donc aussi l'élément ".b("title")." dans la partie ".b("head")."&nbsp;;" ;
         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("&lt;/p&gt;")." correspondant à son ".b("&lt;p&gt;")."&nbsp;;" ;
         finp() ; finli() ;
        
         debutli() ; p() ;
          echo " toujours en ligne 4 l'entité ".b("&amp;nbsp")." est mal écrite, il manque un point-virgule en fin d'entité &nbsp;;" ;
         finp() ; finli() ;
        
         debutli() ; p() ;
          echo " le lien pour Google est incorrect, il faut des guillemets autour de l'URL  &nbsp;;" ;
         finp() ; finli() ;
        
         debutli() ; p() ;
          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") ;
          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&nbsp;:"),"grouge") ;
        echo " une page Web peut comporter autre chose que du ".b("$HTML")."&nbsp;; " ;
        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")."&nbsp;?" ;
        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 &ecirc;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&nbsp;:") ;
        finp() ;
        
        pre_fichier("molecule.dtd","cadre") ;
        
        solution($numExo,$numSerie) ;
        
        p("texte") ;
        echo "Voici un fichier ".href("eau.xml")." possible&nbsp;:" ;
        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&nbsp;:" ;
        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&ecirc;mes informations." ;
        finp() ;
        
        p() ;
        echo b("Fichier molecule.xsd&nbsp;:") ;
        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&nbsp;:" ;
        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&nbsp;:" ;
        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&nbsp;:") ;
        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&nbsp;:") ;
        finp() ;
        
        pre_fichier("trajets.dtd","cadrejaune") ;
        
        p() ;
        echo b("Grammaire trajets.xsd&nbsp;:") ;
        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&nbsp;!)") ;
        
        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")."&nbsp;?" ;
          finp() ; finli() ;
        
          debutli() ; p("texte") ;
           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 " ;
           echo " valide pour la grammaire indiquée en début de document&nbsp;?" ;
          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&nbsp;?" ;
          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 gH    Retour à la page principale de   (gH)