Надо распарсить XSD. Так как есть вероятность, что парсер наткнётся на элемент, тип которого будет описан где-то ниже, зреет решение в виде предварительного прочесать файл на предмет описаний типов и загнать все результаты в память и держать их при себе.
Но так как sbcl - реализация ленивого языка, то вроде можно запилить функцию, производящую поиск определения из файла, и программа не будет искать описание одного и того же типа второй раз.
Как лучше?