Changeset 44188 in spip-zone


Ignore:
Timestamp:
Feb 5, 2011, 7:09:52 PM (9 years ago)
Author:
esj@…
Message:

validerPlugins. Premier essai d'un script transformant un fichier plugin.xml valide en un fichier paquet.xml. La DTD de plugin.xml définie rétroactivement est encore améliorée pour assurer que le fichier est digne d'être converti. A l'inverse, la DTD proposée dans l'article ici est ici un peu dégradée pour s'assurer que le nouveau fichier paquet.xml respecte les mêmes contraintes de fond que l'original (c'est provisoire, le but est justement de mieux contrôler les erreurs). Sur les 863 fichiers plugin.xml testés, 567 respectent plugin.dtd et sont traduits en un paquet.xml respectant paquet.dtd, sauf 15 qui ont justement une erreur dans plugin.xml non reperée par plugin.dtd mais repérée par paquet.dtd. Hormis la cinquantaine de cas même pas conformes XML (cf. r44091), reste donc environ 250 qui sont invalides essentiellement parce que leur balise description etc contienne des balises HTML. Reste donc à s'occuper de leur migration dans les fichiers de langues.

Location:
_outils_/validerPlugins
Files:
1 added
3 edited

Legend:

Unmodified
Added
Removed
  • _outils_/validerPlugins/paquet.dtd

    r44105 r44188  
    3131<!ENTITY % CATEGORY "(auteur|communication|date|divers|edition|maintenance|multimedia|navigation|outil|performance|squelette|statistique|theme)">
    3232
    33 <!ENTITY % CONTENT "(bouton|chemin|necessite|onglet|pipeline|utilise)*" >
     33<!ENTITY % CONTENT "(bouton|chemin|copyright|necessite|lib|necessite|onglet|pipeline|utilise)*" >
    3434
    3535<!ELEMENT paquet (nom slogan licence? auteur* description %CONTENT; spip*) >
    3636<!ATTLIST paquet
    37           categorie %CATEGORY; #REQUIRED
    38           compatible %INTERVAL; #REQUIRED
     37          categorie %CATEGORY; #IMPLIED
     38          compatible %INTERVAL; #IMPLIED
    3939          etat %ETAT; #REQUIRED
    4040          lien %URI;  #IMPLIED
     
    4242          meta %NAME; #IMPLIED
    4343          prefix ID #REQUIRED
    44           version %VNUM; #REQUIRED
     44          version %VNUM; #IMPLIED
    4545          version_base %NUMBER; #IMPLIED
    4646>
     
    6262<!ELEMENT auteur (#PCDATA)>
    6363<!ATTLIST auteur
     64          lien %URI; #IMPLIED
    6465          mail %MAIL; #IMPLIED
    6566>
     
    7172>
    7273
     74<!ELEMENT necessite EMPTY>
     75<!ATTLIST necessite
     76          nom %NAME; #REQUIRED
     77          version %VNUM; #REQUIRED
     78          lien %URI; #IMPLIED
     79>
     80
     81<!ELEMENT utilise EMPTY>
     82<!ATTLIST utilise
     83          nom %NAME; #REQUIRED
     84          version %VNUM; #REQUIRED
     85          lien %URI; #IMPLIED
     86>
     87
    7388<!ELEMENT pipeline EMPTY>
    7489<!ATTLIST pipeline
     
    7893>
    7994
    80 <!ELEMENT necessite EMPTY>
    81 <!ATTLIST necessite
    82           nom %NAME; #REQUIRED
    83           version %VNUM; #REQUIRED
    84           src %URI; #IMPLIED
    85 >
    86 
    87 <!ELEMENT utilise EMPTY>
    88 <!ATTLIST utilise
    89           nom %NAME; #REQUIRED
    90           version %VNUM; #REQUIRED
    91           src %URI; #IMPLIED
    92 >
    93 
    9495<!ELEMENT bouton EMPTY>
    9596<!ATTLIST bouton
    9697          nom %NAME; #REQUIRED
    9798          parent %NAME; #REQUIRED
    98           action %NAME;  #REQUIRED
    99           args %QUERY_STRING; #REQUIRED
     99          action %NAME;  #IMPLIED
     100          args %QUERY_STRING; #IMPLIED
    100101          icone %PATH; #IMPLIED
    101102>
     
    105106          nom %NAME; #REQUIRED
    106107          parent %NAME; #REQUIRED
    107           action %NAME;  #REQUIRED
    108           args %QUERY_STRING; #REQUIRED
     108          action %NAME;  #IMPLIED
     109          args %QUERY_STRING; #IMPLIED
    109110          icone %PATH; #IMPLIED
    110111>
  • _outils_/validerPlugins/plugin.dtd

    r44180 r44188  
    8585<!ELEMENT pipeline (action|nom|inclure)*>
    8686
    87 <!ELEMENT bouton (nom|parent|url|args|icone|titre)*>
     87<!ELEMENT bouton (url|args|icone|titre)*>
     88<!ATTLIST bouton
     89          id %NAME; #REQUIRED
     90          parent %NAME; #REQUIRED
     91>
    8892
    89 <!ELEMENT onglet (nom|parent|url|args|icone|titre)*>
     93<!ELEMENT onglet (url|args|icone|titre)*>
     94<!ATTLIST onglet
     95          id %NAME; #REQUIRED
     96          parent %NAME; #REQUIRED
     97>
    9098
    9199<!ELEMENT action (#PCDATA)>
  • _outils_/validerPlugins/toutValider.php

    r44180 r44188  
    2222$dtd = $argv[3] ? $argv[3] : 'plugin.dtd';
    2323$pdtd = 'prive/' . $dtd;
     24
     25// Installer les dtd dans spip, mais les retirer ensuite
    2426if (!file_exists('../../' . $pdtd)) {
    2527  copy($dtd, '../../' . $pdtd);
    2628  $dtd = false;
    2729}
     30if (!file_exists($pdtd2='../../prive/paquet.dtd')) {
     31  copy('paquet.dtd', $pdtd2);
     32  $dtd2 = false;
     33} else $dtd2 = true;
    2834
     35require('plugin2paquet.php');
    2936chdir('../../');
    3037require 'ecrire/inc_version.php';
    3138require 'ecrire/exec/valider_xml.php';
    3239$files = preg_files($dir,  '/' . $nom . '$');
    33 $nb_files = count($files);
    34 if (!$nb_files) {echo "Aucun fichier ne correspond";exit;}
    35 $sep = ($nb_files > 1) ? ";" : "\n";
    36 $all = array();
    37 $total = $ko = 0;
    38 foreach(valider_dir($files, 'xml', 'plugins') as $valid)  {
    39   list($n, $length, $erreurs, $nom, $scorie) = $valid;
    40   foreach ($erreurs as $k => $v) {
    41     $msg = preg_replace('@<br[^>]*>|:|,@', ' ', $v[0]);
    42     if ($nb_files > 1) $msg = preg_replace(',\s*[(][^)]*[)],', '', $msg);
    43     $erreurs[$k] = trim(str_replace("\n", ' ', textebrut($msg)));
    44     $msg = preg_replace(',<b>[^>]*</b>,', '* ', $msg);
    45     @++$all[trim(str_replace("\n", '', textebrut($msg)))];
    46   }
    47   if ($n) {$total+=$n; $ko++;}
    48   echo $nom, ': ', $n, " erreur(s)", $sep, join($sep, $erreurs), "\n";
     40if (!$files) {
     41  echo "Aucun fichier ne correspond\n ";
     42} else {
     43  valider_all($files);
    4944}
    50 
    51 echo "\n---- Statistiques des $total erreurs des $ko fichiers fautifs sur $nb_files ----\n";
    52 asort($all);
    53 foreach ($all as $k => $v) echo sprintf("%4d %s\n", $v, $k);
    5445if (!$dtd) unlink($pdtd);
     46if (!$dtd2) unlink('prive/paquet.dtd');
    5547?>
Note: See TracChangeset for help on using the changeset viewer.