Я примерно так и делаю, только данные вставляю не через тэг, а целиком пишу в буфер файла данные со всеми скобками в одну строку через snprintf. Определение необходимости генерирования файла на лету определяется через специальную виртуальную папку в которой лежит файл. Делается все это на уровне файловой системы в файле fs.c. В функции fs_open() ловлю запрос файла из папки, а потом пишу в file->data строку с данными в зависимости от имени запрашиваемого файла. Только тут есть ограничение на размер передаваемых данных, они ограничены размером буфера файла.
https://embedders.org - блоги разработчиков встраиваемых систем.