DOMDocument + LIBXML_NOENT - PullRequest
       10

DOMDocument + LIBXML_NOENT

0 голосов
/ 12 января 2011

Я пытаюсь преобразовать простую строку HTML с базовым форматированием, подобным этому

<b>my html string</b><br/>
second line of my html string... etc

, сначала в XHTML, затем вставить в DOMDocument и преобразовать его в XSLFO, используя таблицу стилей преобразования html2fo.xsl.

Проблема в том, что каждый специальный символ, который я получаю в строке html, кодируется сущностью, и когда я пытаюсь загрузить его в DOMDocument, я получаю сообщение об ошибке

DOMDocument::loadXML() [<a href='domdocument.loadxml'>domdocument.loadxml</a>]: Entity 'eacute' not defined in Entity, line: 7

Я на самом деле использую библиотеку tidy для преобразования htmlв xhtml, а затем обработчик php xslt, чтобы получить мой окончательный файл XSLFO.Проблема в том, что даже если я использую свойство LIBXML_NOENT, ошибка возникает.

private static $tidyConfig      = array (
    'force-output'      => true,
    'clean'             => false,
    'output-xhtml'      => true,
    'show-body-only'    => false,
    'wrap'              => 0,
    'doctype'           => 'omit'
 );

$xp         = new XSLTProcessor();
$xmlDoc     = new Mv_Dom_Document();
$dirXslt        = $GLOBALS['G_config']['XSLT_STYLESHEETS'];
$aXsltSS        = GestionFichiers::getContenuRep($dirXslt, array(), null);
$tidyConfig     = (!is_null($tidyConfig)) ? $tidyConfig : Mv_Html_Utils::$tidyConfig;
$tidy       = new tidy();
$tidy->parseString($html, $tidyConfig);

// on convertit la chaine en XHTML
$tidy->cleanRepair();

// on la charge dans un DOMDocument
$xmlDoc->loadXML($tidy->value, LIBXML_NOENT);
...