В зависимости от размера этих тысяч документов обход xinclude при запуске xqueries может быть медленным и занимать достаточно много памяти. По моему опыту, вариант 3 Джо - обычно путь.
В отличие от обычного xslt, в exist-db вы можете определять индексы. Например. у вас есть элемент <listPerson>
в качестве оболочки для 1000-х годов, включая <person>
элементы в качестве корня их собственного документа.
Если вы определили и индекс для <person>
, вы можете использовать, например, ft:query()
для непосредственного запроса к индексу, независимо от того, где в дереве вложенных коллекций и документов расположен элемент. Это, как правило, на несколько порядков быстрее по сравнению с обходом всего документа, начиная с мастера и решая xinclude.
Что касается проверки, вам нужно будет решить, действительно ли необходим полный цикл проверки всего расширенного документа. Это требует некоторых хлопот, но я не могу дать много общих советов, не видя реальных файлов и кода.
Более подробную информацию об индексации вы можете найти в документации в документации