我在使用檔案中的 DTD 時遇到問題。它需要被相對解析,而且它包含的字元導致 DomDocument 無法解析檔案。
編碼和絕對檔名沒有太大幫助。所以我使用 data:// 資料流包裝器 ( https://php.dev.org.tw/manual/en/wrappers.data.php ) 作為解決方法
<?php
// 相對或絕對檔名
$path = '...';
// 將檔案內容轉換為檔名
$data = file_get_contents($path);
$systemId = 'data://text/plain;base64,'.base64_encode($data);
// ...
// 建立 DOMDocumentType 實例
$dtd = $aImp->createDocumentType('qualified name', '', $systemId);
?>
效果非常好。