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

Reports :

Report de r16556. Le find_in_path pour la DTD locale introduit par r15963 
n'etait pas assez general car contraint en amont par le prefixe 'prive'
Report de r16558 Accepter dans une DTD un element a  contenu totalement vide (meme pas EMPTY explicite).
Report r16560. Creer le repertoire de cache des DTD (source et compilee) 
en debut d'analyse, dans le cas d'une DTD locale qu'on ne recopie pas, 
l'ecriture du cache echoue s'il n'est pas la (Eric).
parent 425fe939
Aucune branche associée trouvée
Aucune étiquette associée trouvée
Aucune requête de fusion associée trouvée
......@@ -25,8 +25,7 @@ function charger_dtd($grammaire, $avail, $rotlvl)
if (lire_fichier($file, $r)) {
if ($avail == 'SYSTEM') {
$src = find_in_path($grammaire);
if (!$src OR filemtime($file) < filemtime($src))
if (!$grammaire OR filemtime($file) < filemtime($grammaire))
$r = false;
}
}
......@@ -81,10 +80,13 @@ function compilerRegle($val)
// http://doc.spip.org/@analyser_dtd
function analyser_dtd($loc, $avail, &$dtc)
{
// creer le repertoire de cache si ce n'est fait
// (utile aussi pour le resultat de la compil)
$file = sous_repertoire(_DIR_CACHE_XML);
// si DTD locale, ignorer ce repertoire pour le moment
if ($avail == 'SYSTEM')
$file = find_in_path($loc);
else {
$file = sous_repertoire(_DIR_CACHE_XML);
$file .= preg_replace('/[^\w.]/','_', $loc);
}
......@@ -249,7 +251,7 @@ function analyser_dtd_entity($dtd, &$dtc, $grammaire)
// http://doc.spip.org/@analyser_dtd_element
function analyser_dtd_element($dtd, &$dtc, $grammaire)
{
if (!preg_match('/^<!ELEMENT\s+(\S+)\s+([^>]*)>\s*(.*)$/s', $dtd, $m))
if (!preg_match('/^<!ELEMENT\s+([^>%\s]+)([^>]*)>\s*(.*)$/s', $dtd, $m))
return -3;
list(,$nom, $contenu, $dtd) = $m;
......@@ -261,7 +263,7 @@ function analyser_dtd_element($dtd, &$dtc, $grammaire)
}
$filles = array();
$contenu = expanserEntite($contenu, $dtc->macros);
$val = compilerRegle($contenu);
$val = $contenu ? compilerRegle($contenu) : '(EMPTY )';
if ($val == '(EMPTY )')
$dtc->regles[$nom] = 'EMPTY';
elseif ($val == '(ANY )')
......
......@@ -248,7 +248,7 @@ function analyser_doctype($data)
$pico);
else {
$dtd = $topelement . '.dtd';
$f = _DIR_RACINE . 'prive/' . $dtd;
$f = find_in_path($dtd);
if (file_exists($f))
return array('', $topelement, 'SYSTEM', $f, $dtd, $pico);
}
......
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