Запрашивать документы схемы сложно, так как в XSD существует множество способов сказать одно и то же: например, именованные группы моделей и группы атрибутов значительно усложняют вашу задачу.
Если вы ищете типы, производные как от QName, так и от самого QName, то это действительно довольно сложно.
Таким образом, сделать это с какой-то «скомпилированной» схемой намного проще, чем с необработанными документами схемы.
Использование XSOM является одним из подходов, хотя он не имеет возможности запроса IIRC. Другой подход состоит в том, чтобы использовать вывод Saxon SCM: это представление скомпилированной «модели компонентов схемы» в форме XML; Будучи скомпилированной схемой, вам не нужно беспокоиться обо всех сложностях xs: include, xs: redefine и т. д., в то время как XML означает, что вы можете использовать XQuery на нем. (Я бы порекомендовал XQuery, а не XPath, потому что там будет много объединений, включая рекурсивные объединения, для которых вам нужны пользовательские функции.)