0

我正在尝试使用类似的基本格式转换一个简单的 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);
4

0 回答 0