在 PHP 中使用自定义 DTD 验证 XML
有没有一种方法(无需安装任何库)在 PHP 中使用自定义 DTD 验证 XML?
Is there a way (without installing any libraries) of validating XML using a custom DTD in PHP?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(4)
我对最初问题的解释是,我们有一个“板载”XML 文件,我们希望根据“板载”DTD 文件对其进行验证。 因此,我将如何实现 Soren 和 PayamRWD 的评论中表达的“在 DOCTYPE 元素内插入本地 DTD”的想法:
请注意,为了简洁起见,错误处理已被抑制,并且可能有更好/更通用的方法来处理插值。 但我实际上已将这段代码与真实数据一起使用,并且它适用于 PHP 版本 5.2.17。
My interpretation of the original question is that we have an "on board" XML file that we want to validate against an "on board" DTD file. So here's how I would implement the "interpolate a local DTD inside the DOCTYPE element" idea expressed in comments by both Soren and PayamRWD:
Note that error handling has been suppressed for brevity, and there may be a better/more general way to handle the interpolation. But I have actually used this code with real data, and it works with PHP version 5.2.17.
看看 PHP 的 DOM,尤其是 DOMDocument::schemaValidate 和 DOMDocument::validate.
DOMDocument::validate 的示例相当简单:
Take a look at PHP's DOM, especially DOMDocument::schemaValidate and DOMDocument::validate.
The example for DOMDocument::validate is fairly simple:
如果字符串中有 dtd,则可以使用 数据包装器 对于 dtd:
If you have the dtd in a string, you can validate against it by using a data wrapper for the dtd:
尝试完成“owenmarshall”答案:
在 xml-validator.php:
添加 html、标题、正文...
template-format.xml:
Trying to complete "owenmarshall" answer:
in xml-validator.php:
add html, header, body, ...
template-format.xml: