Разделите большой файл XML на маленькие файлы, но продолжайте проверять его как один файл

У меня есть 7K строк, 500kb XML-файл. Хотя это звучит смешно, называть такой файл большим, но это файл конфигурации, который редактируется вручную, и в этом контексте размер является проблемой:

  • Подсветка синтаксиса очень медленная (по крайней мере, в IntelliJ)
  • Поиск чего-либо в таком большом файле - это боль

Таким образом, я хотел бы разбить файл на несколько небольших файлов. XInclude на самом деле звучит великолепно, однако существует сложный XSD, который очень помогает в предотвращении ошибок, включая ссылки на внешние ключи и индексы, которые должны быть уникальными во всем файле. Если я разделю XML-файл на несколько небольших файлов, проверка должна охватывать несколько файлов и проверять перекрестные ссылки.

-> Мне нужен валидатор, чтобы сначала выполнить XInclude, а затем выполнить проверку. Хотя Google предполагает, что это возможно, я не смог сделать это правильно: я пытался заставить его работать с xmllint --xinclude --schema mySchema.xsd myXMLWithPlentyOfXIncludes.xml, но если включенные файлы не содержат пространства имен, валидатор жалуется, что был обнаружен неожиданный тег (из-за неправильного пространства имен), и если я добавлю атрибут xmlns в корневой тег включаемого файла, он пожалуется The attribute '{http://www.w3.org/XML/1998/namespace}base' is not allowed,

Итак, как мне настроить вещи так, чтобы пространства имен в файлах были правильными? Как мне сделать проверку? Есть ли еще какие-то предостережения, о которых я должен знать?

Бонус: Как мне получить подтверждение для работы в IntelliJ?

1 ответ

Звучит как случай для сущностей. Сделайте каждый из маленьких файлов одной внешней сущностью XML, которую можно редактировать самостоятельно, и замените основной файл очень маленьким файлом, который просто связывает эти сущности ссылками на сущности (&one; и т. Д.). Когда вы запускаете проверку для мастер-файла, он автоматически извлекает сущности.

Другие вопросы по тегам