将大型XML文件拆分为小文件,但要像一个文件一样对其进行验证

时间:2014-01-23 15:08:24

标签: xml validation intellij-idea xsd xinclude

我有一个7K行,500kb XML文件。虽然这样调用这样一个文件听起来很荒谬,但它是一个手工编辑的配置文件,在这种情况下,大小是个问题:

  • 语法突出显示非常慢(至少在IntelliJ中)
  • 在如此大的文件中搜索内容很痛苦

因此我想将文件拆分成许多小文件。 XInclude实际上听起来很棒,但是存在一个复杂的XSD,它有助于防止错误,包括引用外键和索引,这些索引必须在整个文件中是唯一的。如果我将XML文件拆分为多个小文件,则验证需要跨越多个文件并检查交叉引用。

- >我需要验证器首先执行XInclude然后执行验证。虽然谷歌建议这是可能的,但我无法做到这一点:我试图让它与xmllint --xinclude --schema mySchema.xsd myXMLWithPlentyOfXIncludes.xml一起工作,但如果包含的文件不包含命名空间,验证器会抱怨已找到意外的标记(因为错误的命名空间)如果我将xmlns属性添加到包含文件的根标记,它会抱怨The attribute '{http://www.w3.org/XML/1998/namespace}base' is not allowed

那么我应该如何设置以跨文件获取命名空间呢?如何完成验证?还有什么需要注意的警告吗?

额外奖励:如何让验证在IntelliJ中运行?

1 个答案:

答案 0 :(得分:2)

听起来像是实体的案例。使每个小文件成为一个XML外部实体,可以单独编辑,并用一个非常小的文件替换主文件,该文件只是通过实体引用(& one; etc)链接到这些实体。当您在主文件上运行验证时,它将自动拉入实体。