Valid XHTML     Valid CSS2    

Listing du fichier cmpdtd_inc.php

 

00001     <?php
00002     #    (gH)   -_-  cmpdtd_inc.php  ;  TimeStamp (unix) : 15 Août 2012 vers 22:32
00003     
00004     #############################################################################
00005     
00006     function 
lesGrammaires() {
00007     
00008     #############################################################################
00009     
00010     $_tabGram 
= array() ;
00011     $_tabGram
["XHTML_1.0_Transitional"]   = "Dtd/xhtml1-transitional.dtd" ;
00012     $_tabGram
["XHTML_1.0_Strict"]         = "Dtd/xhtml1-strict.dtd"       ;
00013     $_tabGram
["XHTML_1.0_Frameset"]       = "Dtd/xhtml1-frameset.dtd"     ;
00014     $_tabGram
["HTML5_(experimental)"]     = "Dtd/html5-experimental.dtd"  ;
00015     
00016     return($_tabGram
) ;
00017     
00018     } # fin de fonction lesGrammaires
00019     
00020     #############################################################################
00021     
00022     function 
compareDtd($gram1="grammaire 1 non fournie",$gram2="grammaire 2 non fournie") {
00023     
00024     #############################################################################
00025     
00026     $titreGram 
= array() ;
00027     $titreGram
["Dtd/xhtml1-transitional.dtd"]  = " XHTML 1.0 Transitional "   ;
00028     $titreGram
["Dtd/xhtml1-strict.dtd"]        = " XHTML 1.0 Strict "         ;
00029     $titreGram
["Dtd/xhtml1-frameset.dtd"]      = " XHTML 1.0 Frameset "       ;
00030     $titreGram
["Dtd/html5-experimental.dtd"]   = " HTML5 (experimental) " ;
00031     
00032     $errGram 
;
00033     for ($igram
=1;$igram<=2;$igram++) {
00034         $gram  
"gram$igram;
00035         if (isset($titreGram
[$$gram])) {
00036           $tgr   
"tgr$igram;
00037           $$tgr  
$titreGram[$$gram] ;
00038         } else {
00039           $errGram
++ ;
00040           h2
(" Grammaire $$gram non reconnue.") ;
00041         } # fin si
00042     } ; 
# fin pour igram
00043     
00044     if (
$errGram>0) {
00045       return(-1
) ;
00046     } # fin si
00047     
00048     h1
("Comparaison de grammaires au format DTD ") ;
00049     
00050     h2
("Grammaires DTD utilisées&nbsp;:") ;
00051     
00052     blockquote
() ;
00053       for ($igram
=1;$igram<=2;$igram++) {
00054           $gram 
"gram$igram;
00055           $tgr  
"tgr$igram;
00056           p
() ;
00057             echo href
($$gram,$$tgr) ;
00058           finp
() ;
00059       } ; # fin pour igram
00060     finblockquote
() ;
00061     
00062     if ($gram1
==$gram2) {
00063       h2
("Il s'agit de la m&ecirc;me grammaire, aucune comparaison à effectuer.") ;
00064       blockquote
() ;
00065       div
("plusgros") ;
00066          p
() ;
00067            echo "Par contre, vous pouvez analyser la grammaire en termes d'élements, d'attributs, d'entités " 
;
00068            echo " à l'aide du lien suivant : " 
;
00069          finp
() ;
00070          p
() ;
00071            nbsp
(20) ;
00072            echo href
("analysedtd.php?url=$gram1"," &nbsp; analyse de $tgr1 &nbsp; ","bouton_fin nou bleu_pastel") ;
00073          finp
() ;
00074          pvide
() ;
00075       findiv
() ;
00076       finblockquote
() ;
00077       return(-1
) ;
00078     } ; # fin si
00079     
00080     # ---------------------------------------------------------------------------
00081     
00082     h2
("Résultats de la comparaison&nbsp;:") ;
00083     
00084     blockquote
() ;
00085     
00086     $nbe 
# nombre d'éléments
00087     $tdr  
= array() ; # tableau des résultats
00088     
00089     $err 
;
00090     for ($ific
=1;$ific<=2;$ific++) {
00091        $gram   
"gram$ific;
00092        $nomFic 
= $$gram ;
00093        $fh 
= @fopen($nomFic,"r") ;
00094        if (!$fh
) {
00095           h2
(" impossible d'ouvrir $nomFic") ;
00096           $err
++ ;
00097        } ; # finsi
00098     
# fin pour $ific
00099     
00100     if (
$err>0) {
00101     
00102        h3
("Erreur sur fichier, abandon du programme.") ;
00103     
00104     } else {
00105     
00106        for ($ific
=1;$ific<=2;$ific++) {
00107     
00108           $gram   
"gram$ific;
00109           $nomFic 
= $$gram ;
00110     
00111           $txt 
file_get_contents($nomFic) ;
00112     
00113           # on passe en revue la variable txt
00114           # pour bien détecter les éléments, on essaie de mettre une fin
00115           # de ligne en cas de fin de balise
00116           # on "chope" alors toutes les balises, ouvrantes comme fermantes
00117           # en principe dans une DTD, après ! on a soit -- soit ELEMENT soit ATTLIST
00118           # il faut donc ensuite analyser le deuxième mot quand ce n'est pas --
00119     
00120           $ntxt 
str_replace("\n"," ",$txt) ;
00121           $ntxt 
str_replace(">",">\n",$ntxt) ;
00122           $er_bof 
"/<(.*)?>/" # balise ouvrante/fermante
00123           preg_match_all
($er_bof,$ntxt,$tbof) ;
00124     
00125           # our mieux comprendre la gestion des mots, mettre $modeDbg = 1 ;
00126     
00127           $modeDbg
# 0 en mode normal, 1 pour debug
00128     
00129           if (
$modeDbg==1) { pre() ; }
00130           foreach ($tbof
[1] as $elt) {
00131     
00132             if ($modeDbg
==1) { print_r($elt) ; echo "\n" ; }
00133     
00134               $tdm 
preg_split("/\s+/",$elt) ; # tableau des mots trouvés
00135               $lpm 
$tdm[0] ; # le premier   mot
00136               if (isset(
$tdm[1])) {
00137                  $ldm 
$tdm[1] ; # le deuxième  mot
00138                  if (isset(
$tdm[2])) {
00139     
00140                     $ldm 
utf8_decode($ldm) ;
00141     
00142                     if ($lpm
=="!ELEMENT") {
00143                       $nbe
++ ;
00144                       if (!isset($tdr
[$ldm])) {
00145                          $tdr
[$ldm]  = 0     # initialisation
00146                       } ; 
# fin si
00147                       $tdr
[$ldm] += $ific # donc 1 pour trans, 2 pour strict, 3 si commun
00148                     
# fin si geston lpm
00149     
00150                  
# fin si sur le mot 2 existe
00151               
# fin si sur le mot 1 existe
00152     
00153           } ; 
# fin pourchaque elt
00154     
00155           if (
$modeDbg==1) { finpre() ; }
00156     
00157           # il ne reste plus qu'à trier les éléments et les entités par ordre alphabétique
00158     
00159           ksort
($tdr) ;
00160     
00161        } # fin pour $ific
00162     
00163        $nbtr  
0;
00164        $nbst  
0;
00165        $nbcom 
0;
00166        foreach ($tdr 
as $elt=>$cnt) {
00167          if ($cnt
==1) { $nbtr++  ; } ;
00168          if ($cnt
==2) { $nbst++  ; } ;
00169          if ($cnt
==3) { $nbcom++ ; } ;
00170        } ; # fin pourchaque elt
00171     
00172        p
() ;
00173         echo "
$nbe élements vus en tout, donc $nbcom communs aux deux grammaires, " ;
00174         br
() ;
00175         echo "
$nbtr spécifiques à $tgr1 et $nbst spécifiques à $tgr2. " ;
00176        finp
() ;
00177     
00178        afficheTableau
($tdr,3,"élements communs",$nbcom) ;
00179        afficheTableau
($tdr,1,"éléments spécifiques à $tgr1",$nbtr) ;
00180        afficheTableau
($tdr,2,"éléments spécifiques à $tgr2",$nbst) ;
00181     
00182        h2
("Analyse (éléments, attributs,entités) de chaque grammaire&nbsp;:") ;
00183     
00184        blockquote
() ;
00185          p
() ;
00186            echo href
("analysedtd.php?url=$gram1"," &nbsp; analyse de $tgr1 &nbsp; ","bouton_fin nou bleu_pastel") ;
00187            nbsp
(20) ;
00188            echo href
("analysedtd.php?url=$gram2"," &nbsp; analyse de $tgr2 &nbsp; ","bouton_fin nou bleu_pastel") ;
00189          finp
() ;
00190        finblockquote
() ;
00191     
00192     } # fin si
00193     
00194     finblockquote
() ;
00195     
00196     } # fin de fonction compareDtd
00197     
00198     #############################################################################
00199     
00200     function  
afficheTableau($tabElt,$valCode,$titre,$nbe) {
00201     
00202     #############################################################################
00203     
00204     h2
("Tableau des $titre") ;
00205     
00206     blockquote
() ;
00207     
00208       if ($nbe
==0) {
00209          h3
("aucun élément à afficher.") ;
00210       } else {
00211     
00212         table
(1,15,"collapse") ;
00213               tr
() ;
00214                 th
("C","jaune_pastel") ;
00215                   echo " Numéro " 
;
00216                 finth
() ;
00217                 th
("C","jaune_pastel") ;
00218                   echo " Elément " 
;
00219                 finth
() ;
00220               fintr
() ;
00221     
00222               $numElt 
;
00223               foreach ($tabElt 
as $cle=>$valeur) {
00224                 if ($valeur
==$valCode) {
00225                   $numElt
++ ;
00226                   tr
() ;
00227                     td
("R") ;
00228                       echo s_span
("&nbsp;&nbsp;".$numElt."&nbsp;&nbsp;","gvert") ;
00229                     fintd
() ;
00230                     td
() ;
00231                       $clef 
preg_replace("/</","&lt;",$cle) ;
00232                       $clef 
preg_replace("/>/","&gt;",$clef) ;
00233                       echo s_span
($clef,"gbleu") ;
00234                     fintd
() ;
00235                   fintr
() ;
00236                 } ; # fin si
00237               } ; 
# fin pourchaque
00238     
00239         fintable
() ;
00240     
00241       } # fin si
00242     
00243     finblockquote
() ;
00244     
00245     } # fin de fonction afficheTableau
00246     
00247     #############################################################################
00248     
00249     ?>

 

 

retour gH    Retour à la page principale de   (gH)