我正在编写自己的验证XML解析器。 (是的,我知道这是一项非常复杂的任务,使用libxml2或Xerces等现有产品将是更明智的选择。但这不是一个选择,所以请耐心等待。)
将XML和XSD文件解析为树结构应该不是很困难。但是我似乎无法弄清楚用什么算法来验证XML树对XSD的算法。
我做过一些研究,但我发现的一切都是过于通用(如何编写编译器等)或过于具体(如增量验证)。
我有一些自己的想法,但它们都相当复杂,所以在开始编码之前,我真的希望对我的想法的有效性(没有双关语)更加确定。
提前致谢,如果您认为可以提供帮助,请随时询问更多详情!
答案 0 :(得分:6)
在编写XSD处理器并让它通过W3C测试套件中的大约50,000次测试时,有大量的工作。但是,如果你坚持使用关键算法来验证语法实例,那么这是一个很好的起点:
http://www.ltg.ed.ac.uk/~ht/XML_Europe_2003.html
你还应该获得Aho和Ullman的副本,其中包含Henry引用的算法。