我正在尝试构建一个工具来验证特定的 XML 并输出人类可读的结果。我现有的 PHP 代码使用 DOMDocument::schemaValidate 针对 .xsd 文件验证 XML,但错误消息不是很友好。
例如,假设我的 XML 看起来像下面的示例,并且纬度应该是小数:
<Person>
<FirstName>Bret</FirstName>
<Location>
<Address>123 Test Ave.</Address>
<Latitude></Latitude>
<Longitude>30.139338</Longitude>
</Location>
</Person>
我目前收到的错误消息是:
Document::schemaValidate(): Element 'Latitude': '' 不是原子类型 'xs:decimal' 的有效值。
我想让它说:
XML 第 5 行中的错误:“Bret”人的地址中的纬度为空。您必须提供有效的纬度,我们才能处理此 XML。
之前也有人问过类似的问题:
但是,如果 DOMDocument::schemaValidate 不是适合这项工作的工具,我愿意使用 PHP 或 Perl 编写我自己的蛮力验证代码。请注意,我的错误消息需要引用存储在父元素中的信息,例如我的示例中的“FirstName”字段。
我的问题是:创建此验证工具的好方法是什么?是否有任何现有的代码库或教程可以为我指明正确的方向?
谢谢!!