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