我有一组模式,我试图使用Nokogiri来验证XML文档。
我有一个名为http://example.com/root
的顶级架构。它导入另一个模式Extension.xsd,其名称空间为http://example.com/extension
,并包含模式Types.xsd(显然具有http://example.com/root
的名称空间。)
Extension.xsd模式,名称空间为http://example.com/extension
,导入模式Types.xsd,名称空间为http://example.com/root
。
当我试图让Nokogiri加载它抱怨的根模式时,Element import: The schema document Types.xsd cannot be imported, since it was already included or redefined
。
当我从Extension.xsd文件中删除import语句时,Nokogiri说不允许引用名称空间http://example.com/root
,因为没有导入任何内容。
当我从根模式文件中删除include语句时,Nokogiri说Types.xsd的根模式中使用的元素不会解析为元素声明。
知道如何让Nokogiri接受这种架构结构吗?这甚至是有效的架构吗?
答案 0 :(得分:1)
在模式中使用循环xs:import声明是完全有效的,事实上,正如这个例子所示,它通常是必要的。我不知道Nokogiri,所以我不知道是否有修复。