我有一个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文件可以验证,那么我现在如何验证呢?
谢谢!
以下是XML文件的两个验证级别。第一个是XML语法本身。符合该规则的XML文档称为"格式良好"。您可以通过加载XML来进行验证。
libxml_use_internal_errors(TRUE);
$dom = new DOMDocument();
$dom->load($file);
var_dump(libxml_get_errors());
根据您的一般错误处理,这可能会变得更高级。请注意,这里也可能有警告和通知。DOMDocument有一些自动更正。
第二个级别是针对XML格式的特定规则进行验证。只有当您使用DTD、Schema或RelaxNG定义规则时,才能进行此验证。