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

Validateur intégré: dénoncer les IDREF inconnus (i.e. les attributs For de la...

Validateur intégré: dénoncer les IDREF inconnus (i.e. les attributs For de la balise Label qui n'ont pas pour valeur celle d'un attribut Id dans la page)
parent 0d19d491
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -128,49 +128,58 @@ function defautElement($parser, $data)
}
// http://doc.spip.org/@xml_parsefile
function xml_parsefile($xml_parser, $file)
function xml_parsefile($phraseur, $file)
{
if (!($fp = fopen($file, "r"))) {
if (!($fp = fopen($file, "r"))) {
include_spip('inc/minipres');
echo minipres("Impossible d'ouvrir le fichier XML");
exit;
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($xml_parser, str_replace('’',"'",$data), feof($fp))) {
return (sprintf("erreur XML : %s ligne %d",
xml_error_string(xml_get_error_code($xml_parser)),
xml_get_current_line_number($xml_parser)));
}
}
return "";
}
while ($data = fread($fp, 4096)) {
if (!xml_parse($phraseur,
str_replace('’',"'",$data), feof($fp))) {
return (sprintf("erreur XML : %s ligne %d",
xml_error_string(xml_get_error_code($phraseur)),
xml_get_current_line_number($phraseur)));
}
}
return "";
}
// http://doc.spip.org/@xml_parsestring
function xml_parsestring($xml_parser, $data)
function xml_parsestring($phraseur, $data)
{
global $phraseur_xml;
$phraseur_xml->contenu[$phraseur_xml->depth] ='';
$r = "";
if (!xml_parse($xml_parser, $data, true)) {
if (!xml_parse($phraseur, $data, true)) {
// ne pas commencer le message par un "<" (cf inc_sax_dist)
$r = xml_error_string(xml_get_error_code($xml_parser)) .
coordonnees_erreur($xml_parser) . '<br />' .
(!$phraseur_xml->depth ? '' :
(
_L("derni&egrave;re balise non referm&eacute;e&nbsp;: ") .
"<tt>" .
$phraseur_xml->ouvrant[$phraseur_xml->depth] .
"</tt>" .
_L(" ligne ") .
$phraseur_xml->reperes[$phraseur_xml->depth] .
'<br />' ));
} else if ($phraseur_xml->err)
$r = join('<br />', $phraseur_xml->err) . '<br />';
else $r = $phraseur_xml->res;
return $r;
return xml_error_string(xml_get_error_code($phraseur)) .
coordonnees_erreur($phraseur) . '<br />' .
(!$phraseur_xml->depth ? '' :
(
_L("derni&egrave;re balise non referm&eacute;e&nbsp;: ") .
"<tt>" .
$phraseur_xml->ouvrant[$phraseur_xml->depth] .
"</tt>" .
_L(" ligne ") .
$phraseur_xml->reperes[$phraseur_xml->depth] .
'<br />' ));
}
foreach ($phraseur_xml->idrefs as $idref) {
list($nom, $ligne, $col) = $idref;
if (!isset($phraseur_xml->ids[$nom]))
$phraseur_xml->err[]= " <p><b>$nom</b>"
. _L(" ID inconnu ligne ")
. $ligne
. _L(" colonne ")
. $col;
}
if ($phraseur_xml->err)
return join('<br />', $phraseur_xml->err) . '<br />';
return $phraseur_xml->res;
}
var $depth = "";
......@@ -182,6 +191,7 @@ function xml_parsestring($xml_parser, $data)
var $entites = array();
var $attributs = array();
var $ids = array();
var $idrefs = array();
var $err = array();
}
......
......@@ -173,9 +173,10 @@ function validerAttribut($parser, $name, $val, $bal)
. _L(" vu auparavant ligne ")
. $l
. _L(" colonne ")
. $c;
}
else $phraseur_xml->ids[$val] = array(xml_get_current_line_number($parser), xml_get_current_column_number($parser));
. $c;
} else $phraseur_xml->ids[$val] = array(xml_get_current_line_number($parser), xml_get_current_column_number($parser));
} elseif ($type == 'IDREF') {
$phraseur_xml->idrefs[] = array($val, xml_get_current_line_number($parser), xml_get_current_column_number($parser));
}
}
}
......
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