Ответ нашелся такой (кому-то пригодится): использовать Progressive Parsing:
...
XMLPScanToken token;
//Сначала подготовительные работы и создание структуры для анализа схемы
if (!parser->parseFirst(*memBufIS, token))
{
cerr << "scanFirst() failed\n" << endl;
return 1;
}
//Далее вызываем парсер отдельно на каждую строчку:
bool gotMore = true;
gotMore = parser->parseNext(token);
//Между вызовами как раз и можно менять обработчики, настройки и т.д.
if (((ShemaSAXHandler*)docHandler)->Version() == "1.1")
{
parser->setDocumentHandler(new_docHandler);
}
// parseNext вернет false, когда считает конец корня (ну то есть схема закончится)
while (gotMore)
gotMore = parser->parseNext(token);