Разделите большой файл 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; и т. Д.). Когда вы запускаете проверку для мастер-файла, он автоматически извлекает сущности.