Skip to content
Extraits de code Groupes Projets
Valider dc5702ad rédigé par esj's avatar esj
Parcourir les fichiers

Présentation synthétique des erreurs de validation, avec liens du texte de...

Présentation synthétique des erreurs de validation, avec liens du texte de l'erreur vers la ligne fautive et réciproquement (avec une ambiguité si une meme ligne a plusieurs erreurs, il y a intéret à faire des lignes courtes). Et on ne se plaint plus d'attributs inconnus d'une balise inconnue.

A signaler que le validateur du W3C dénonce plusieurs occurrences d'une meme erreur en plusieurs endroits, sauf si elles se suivent dans la liste des erreurs. Vachement clair. Et pour continuer le feuilleton [8129], sachez que la DTD xhtml dite scricte (http://www.w3.org/TR/2000/REC-xhtml1-20000126/DTD/xhtml1-strict.dtd) trouve ceci valide:

{{{<form action='/'><div><form action='/'></form></div></form>}}}

Au moins la non stricte avait l'honneteté de le signaler en commentaire.
Ils sont décidément très forts les grammairiens du W3C.
parent 3941146f
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
...@@ -171,9 +171,9 @@ function xml_parsestring($phraseur, $data) ...@@ -171,9 +171,9 @@ function xml_parsestring($phraseur, $data)
list($nom, $ligne, $col) = $idref; list($nom, $ligne, $col) = $idref;
if (!isset($phraseur_xml->ids[$nom])) if (!isset($phraseur_xml->ids[$nom]))
$phraseur_xml->err[]= " <p><b>$nom</b>" $phraseur_xml->err[]= " <p><b>$nom</b>"
. _L(" ID inconnu ligne ") . _L(" ID inconnu ")
. $ligne . $ligne
. _L(" colonne ") . " "
. $col; . $col;
} }
if ($phraseur_xml->err) if ($phraseur_xml->err)
...@@ -235,9 +235,9 @@ function inc_sax_dist($page, $apply=false) { ...@@ -235,9 +235,9 @@ function inc_sax_dist($page, $apply=false) {
function coordonnees_erreur($xml_parser) function coordonnees_erreur($xml_parser)
{ {
return return
_L(" ligne ") . ' ' .
xml_get_current_line_number($xml_parser) . xml_get_current_line_number($xml_parser) .
_L(" colonne ") . ' ' .
xml_get_current_column_number($xml_parser); xml_get_current_column_number($xml_parser);
} }
......
...@@ -139,9 +139,12 @@ function validerAttribut($parser, $name, $val, $bal) ...@@ -139,9 +139,12 @@ function validerAttribut($parser, $name, $val, $bal)
{ {
global $phraseur_xml; global $phraseur_xml;
$a = @$phraseur_xml->attributs[$bal]; // vide ou absent, pareil. // Si la balise est inconnue, eviter d'insister
if (!isset($phraseur_xml->attributs[$bal]))
return ;
$a = $phraseur_xml->attributs[$bal];
if (!isset($a[$name])) if (!isset($a[$name]))
$phraseur_xml->err[]= " <b>$name</b>" $phraseur_xml->err[]= " <b>$name</b>"
. _L(' attribut inconnu de ') . _L(' attribut inconnu de ')
. "<b>$bal</b>" . "<b>$bal</b>"
...@@ -170,9 +173,9 @@ function validerAttribut($parser, $name, $val, $bal) ...@@ -170,9 +173,9 @@ function validerAttribut($parser, $name, $val, $bal)
. coordonnees_erreur($parser); . coordonnees_erreur($parser);
list($l,$c) = $phraseur_xml->ids[$val]; list($l,$c) = $phraseur_xml->ids[$val];
$phraseur_xml->err[]= " <p><b>$val</b>" $phraseur_xml->err[]= " <p><b>$val</b>"
. _L(" vu auparavant ligne ") . _L(" vu auparavant ")
. $l . $l
. _L(" colonne ") . " "
. $c; . $c;
} else $phraseur_xml->ids[$val] = array(xml_get_current_line_number($parser), xml_get_current_column_number($parser)); } else $phraseur_xml->ids[$val] = array(xml_get_current_line_number($parser), xml_get_current_column_number($parser));
} elseif ($type == 'IDREF') { } elseif ($type == 'IDREF') {
......
...@@ -314,7 +314,7 @@ function ancre_texte($texte, $fautifs=array()) ...@@ -314,7 +314,7 @@ function ancre_texte($texte, $fautifs=array())
$ancre = md5($texte); $ancre = md5($texte);
$n = strlen(count($tableau)); $n = strlen(count($tableau));
$format = "<a href='#T$ancre'><span id='L%d' style='text-align: right;color: black;'>%0" $format = "<a href='#T%s'><span id='L%d' style='text-align: right;color: black;'>%0"
. strval($n) . strval($n)
. "d&nbsp;&nbsp;</span></a>\n"; . "d&nbsp;&nbsp;</span></a>\n";
...@@ -324,23 +324,26 @@ function ancre_texte($texte, $fautifs=array()) ...@@ -324,23 +324,26 @@ function ancre_texte($texte, $fautifs=array())
$flignes = array(); $flignes = array();
$loc = array(0,0);
foreach ($fautifs as $lc) foreach ($fautifs as $lc)
if (is_array($lc)) if (is_array($lc)) {
$flignes[$lc[0]] = $lc[1]; $l = array_shift($lc);
else $flignes[$lc] = 0; $flignes[$l] = $lc;
} else $flignes[$lc] = $loc;
foreach ($tableau as $ligne) { foreach ($tableau as $ligne) {
if (isset($flignes[$i])) { if (isset($flignes[$i])) {
$ligne = str_replace('&nbsp;',' ', $ligne); $ligne = str_replace('&nbsp;',' ', $ligne);
$indexmesg = $flignes[$i][1];
// tentative de pointer sur la colonne fautive; // tentative de pointer sur la colonne fautive;
// marche pas car highlight_string rajoute des entites. A revoir. // marche pas car highlight_string rajoute des entites. A revoir.
// $m = $flignes[$i]; // $m = $flignes[$i][0];
// $ligne = substr($ligne, 0, $m-1) . // $ligne = substr($ligne, 0, $m-1) .
// sprintf($formaterr, substr($ligne,$m)); // sprintf($formaterr, substr($ligne,$m));
$ligne = sprintf($formaterr, $ligne); $ligne = sprintf($formaterr, $ligne);
} } else $indexmesg = $ancre;
$res .= "<br />\n" $res .= "<br />\n"
. sprintf((($i%10) ? $format :$format10), $i, $i) . sprintf((($i%10) ? $format :$format10), $indexmesg, $i, $i)
. $ligne; . $ligne;
$i++; $i++;
} }
...@@ -531,18 +534,44 @@ function emboite_texte($texte, $fonc='',$self='') ...@@ -531,18 +534,44 @@ function emboite_texte($texte, $fonc='',$self='')
$eregs)) $eregs))
return array(ancre_texte($texte, array('', '')), true); return array(ancre_texte($texte, array('', '')), true);
if (!isset($GLOBALS['debug_objets'])) { if (!isset($GLOBALS['debug_objets'])) {
preg_match_all(",([^0-9]* )([0-9]+)(.*?(\d*)<br />),", preg_match_all(",(.*?)(\d+)(\D+(\d+)<br />),",
$GLOBALS['xhtml_error'], $GLOBALS['xhtml_error'],
$regs, $regs,
PREG_SET_ORDER); PREG_SET_ORDER);
$err = ''; $err = '<tr><th>#</th><th>Occ.</th><th>Msg</th><th>L</th><th>Col</th></tr>';
$fautifs = array(); $fautifs = array();
$i = 0;
$encore = array();
foreach($regs as $r) {
if (isset($encore[$r[1]]))
$encore[$r[1]]++;
else $encore[$r[1]] = 1;
}
$encore2 = array();
$colors = array('#e0e0f0', '#f8f8ff');
foreach($regs as $r) { foreach($regs as $r) {
$err .= $r[1] . $i++;
"<a href='#L" . $r[2] . "'>$r[2]</a>$r[3]"; list(,$msg, $ligne, $fin, $col) = $r;
$fautifs[]= array($r[2], $r[4]); if (isset($encore2[$msg]))
$ref = $encore2[$msg]++;
else $encore2[$msg] = $ref = 1;
$err .= "<tr style='background-color: "
. $colors[$i%2]
. "'><td style='text-align: right'>"
. $i
. "</td><td style='text-align: right'>"
. "$ref/$encore[$msg]</td><td>$msg</td>"
. "<td style='text-align: right'><a href='#L"
. $ligne
. "' id='T$i'>"
. $ligne
. "</a></td><td style='text-align: right'>"
. $fin
. "</td></tr>\n";
$fautifs[]= array($ligne, $col, $i);
} }
return array(ancre_texte($texte, $fautifs), $err); return array(ancre_texte($texte, $fautifs),
"<table>$err</table>");
} else { } else {
$fermant = $eregs[2]; $fermant = $eregs[2];
$ouvrant = $eregs[4]; $ouvrant = $eregs[4];
......
0% Chargement en cours ou .
You are about to add 0 people to the discussion. Proceed with caution.
Terminez d'abord l'édition de ce message.
Veuillez vous inscrire ou vous pour commenter