【问题标题】:Split large XML file into small files, but keep validating it like one file将大型 XML 文件拆分为小文件,但像一个文件一样继续验证它
【发布时间】:2014-01-23 15:08:23
【问题描述】:

我有一个 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 中工作?

【问题讨论】:

    标签: xml validation intellij-idea xsd xinclude


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-09-23
      • 1970-01-01
      • 2019-10-21
      • 1970-01-01
      • 2017-08-21
      相关资源
      最近更新 更多