导入使用原始命名空间导入另一个模式的模式

时间:2012-02-16 17:09:47

标签: ruby xml xsd nokogiri xml-namespaces

我有一组模式,我试图使用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接受这种架构结构吗?这甚至是有效的架构吗?

1 个答案:

答案 0 :(得分:1)

在模式中使用循环xs:import声明是完全有效的,事实上,正如这个例子所示,它通常是必要的。我不知道Nokogiri,所以我不知道是否有修复。