そのような基本的なフォーマットで単純な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);