简体   繁体   English

根据未声明DOCTYPE的DTD外部文件验证XML

[英]Validate XML against a DTD external file without DOCTYPE declared

I have external XML and DTD files. 我有外部XML和DTD文件。 The XML file unfortunately doesn't have a declaration to point to its corresponding DTD file. 不幸的是,XML文件没有声明指向其对应的DTD文件。 Is it possible to still validate against it using PHP? 是否仍可以使用PHP对其进行验证? Any help or a link to a resource would be greatly appreciated. 任何帮助或到资源的链接将不胜感激。 Thanks. 谢谢。

Duplicate of XML validation against given DTD in PHP 在PHP中针对给定DTD进行XML验证的重复

<?php

$xml = <<<END
<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE foo SYSTEM "foo.dtd">
<foo>
    <bar>baz</bar>
</foo>
END;

$root = 'foo';

$old = new DOMDocument;
$old->loadXML($xml);

$creator = new DOMImplementation;
$doctype = $creator->createDocumentType($root, null, 'bar.dtd');
$new = $creator->createDocument(null, null, $doctype);
$new->encoding = "utf-8";

$oldNode = $old->getElementsByTagName($root)->item(0);
$newNode = $new->importNode($oldNode, true);
$new->appendChild($newNode);

$new->validate();

?>

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM