我正在尝试使用类似的基本格式转换一个简单的 HTML 字符串
<b>my html string</b><br/>
second line of my html string... etc
首先转换为 XHTML,然后插入 DOMDocument 并使用 html2fo.xsl 转换样式表将其转换为 XSLFO。
问题是我在 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);