我有一个7K行,500kb XML文件。虽然这样调用这样一个文件听起来很荒谬,但它是一个手工编辑的配置文件,在这种情况下,大小是个问题:
因此我想将文件拆分成许多小文件。 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中运行?
答案 0 :(得分:2)
听起来像是实体的案例。使每个小文件成为一个XML外部实体,可以单独编辑,并用一个非常小的文件替换主文件,该文件只是通过实体引用(& one; etc)链接到这些实体。当您在主文件上运行验证时,它将自动拉入实体。