DOMDocument::load(): 在实体中找不到命名空间默认前缀
DOMDocument::load(): Namespace default prefix was not found in Entity
我正在用 PHP DOMDocument 解析一些 XML。这是我的代码:
$doc = new DOMDocument;
$doc->resolveExternals = true;
$doc->substituteEntities = true;
$doc->load('../poems_xml/'.$pid.'.xml');
$xsl = new DOMDocument;
$xsl->load('../xslt/title.xsl');
$proc = new XSLTProcessor;
$proc->importStylesheet($xsl);
$ptitle = $proc->transformToXML($doc);
我在 .xml:
的开头声明了一个实体文件
<?xml version="1.0" encoding="utf-8"?>
<?oxygen RNGSchema="../dtd/dps.rng" type="xml"?>
<?xml-stylesheet href="../dtd/dps.css" type="text/css"?>
<!DOCTYPE TEI SYSTEM "../dtd/entities.ent">
[...]
实体文件如下所示:
[...]
<!ENTITY d1_AytR_002 "<rs key='d1_AytR_002'>d1_AytR_002</rs>">
[...]
在我的 .xml 中,我像这样使用这些实体:
...&d1_AytR_002;...
现在,除了实体之外,在解析文件和通过 xslt 和 css 文件转换文件方面一切顺利。他们只是被忽略了。打开 php_error_log 标志,我得到这个:
Notice: DOMDocument::load(): Namespace default prefix was not found in Entity, line: 1 in index.php on line 28
(index.php
的第 28 行是 load('../poems_xml/'.$pid.'.xml')
指令所在的位置)。有人可以阐明关于我的实体我应该 check/add 什么吗?
我正在使用 PHP 5.6.40.
一种变通方法(和可能的永久解决方案)是将名称空间添加到每个 <!ENTITY>
,如下所示:
<!ENTITY d1_AytR_002 "<rs xmlns="http://www.tei-c.org/ns/1.0" key='d1_AytR_002'>d1_AytR_002</rs>">
我正在用 PHP DOMDocument 解析一些 XML。这是我的代码:
$doc = new DOMDocument;
$doc->resolveExternals = true;
$doc->substituteEntities = true;
$doc->load('../poems_xml/'.$pid.'.xml');
$xsl = new DOMDocument;
$xsl->load('../xslt/title.xsl');
$proc = new XSLTProcessor;
$proc->importStylesheet($xsl);
$ptitle = $proc->transformToXML($doc);
我在 .xml:
的开头声明了一个实体文件<?xml version="1.0" encoding="utf-8"?>
<?oxygen RNGSchema="../dtd/dps.rng" type="xml"?>
<?xml-stylesheet href="../dtd/dps.css" type="text/css"?>
<!DOCTYPE TEI SYSTEM "../dtd/entities.ent">
[...]
实体文件如下所示:
[...]
<!ENTITY d1_AytR_002 "<rs key='d1_AytR_002'>d1_AytR_002</rs>">
[...]
在我的 .xml 中,我像这样使用这些实体:
...&d1_AytR_002;...
现在,除了实体之外,在解析文件和通过 xslt 和 css 文件转换文件方面一切顺利。他们只是被忽略了。打开 php_error_log 标志,我得到这个:
Notice: DOMDocument::load(): Namespace default prefix was not found in Entity, line: 1 in index.php on line 28
(index.php
的第 28 行是 load('../poems_xml/'.$pid.'.xml')
指令所在的位置)。有人可以阐明关于我的实体我应该 check/add 什么吗?
我正在使用 PHP 5.6.40.
一种变通方法(和可能的永久解决方案)是将名称空间添加到每个 <!ENTITY>
,如下所示:
<!ENTITY d1_AytR_002 "<rs xmlns="http://www.tei-c.org/ns/1.0" key='d1_AytR_002'>d1_AytR_002</rs>">