我有一个XML文件来操作并使用XSLT进行处理。我想在XSLT转换之前初始验证XML文件。 这是我的代码:
<?php
$doc = new DOMDocument();
$doc->load('somefile.xml');
$isValid = $doc->validate();
if(!$isValid) {
echo "$doc is INVALID!";
}else{
$xsldoc = new DOMDocument();
$xsldoc->load('somename.xslt');
$xslt = new XSLTProcessor();
$xslt->importStylesheet($xsldoc);
$result = $xslt->transformToDoc($doc);
$result->save('somefile.xml');
}
?>
但是在运行这个php文件后,我得到以下错误:
Warning: DOMDocument::validate(): no DTD found! in C:\test.php on line 10
Catchable fatal error: Object of class DOMDocument could not be converted to string in C:\test.php on line 13
其中我没有任何要验证的DTD文件,那么我现在可以如何验证?
谢谢!
答案 0 :(得分:4)
以下是XML文件的两个级别的验证。第一个是XML语法本身。符合该规则的XML文档称为“格式良好”。您可以通过加载XML来执行此验证。
libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->load($file);
var_dump(libxml_get_errors());
根据您的一般错误处理,这可以变得更先进。请注意,这里也可以是警告和通知。 DOMDocument有一些自动更正。
第二级是针对XML格式的特定规则的验证。只有在使用DTD,Schema oder RelaxNG定义规则时才能进行此验证。