- Один из подходов состоит в том, чтобы преобразовать XML в реляционную структуру для заполнения базы данных, которая затем запрашивается по запросу. 20 МБ XML не огромны, поскольку XML является подробным.
- Другой вариант - преобразовать файл по запросу. Обратите внимание, что вам не нужно загружать файл XML для каждого запроса. Вы загрузили его (и XSLT), заполнили параметры из параметров запроса, затем преобразовали.
Второй подход может быть дорогостоящим, но вы можете разделить файл на файлы меньшего размера. Это зависит от того, что это за информация и какие запросы вы будете поддерживать.
Что наиболее эффективно, зависит от размера и структуры данных. Базы данных эффективны для запросов и могут быть оптимизированы для этого. XSLT хорош для эффективного изменения (преобразования) существующего документа в другой.
Итак, 2 будет лучше, если вы хотите сохранить большую часть содержимого документа.
Запрос XPath для контент вряд ли превзойдет запросы к базе данных эквивалентной структуры, если только не будет много вложений и вы не попытаетесь оптимизировать базу данных или запросы.
Я бы создал XSLT вашего результата и сделал бы некоторые тесты на то, сколько времени нужно, прежде чем принять решение.