The obvious way to do this is to use a schema-aware XSLT 2.0 processor such as Saxon-SA. This will do a lot more than expanding default attributes, it will also enable you detect errors in your stylesheet code more quickly: an XSLT processor can also use type information for optimizing your code.
If all you want from your schema, however, is expansion of defaults then you may be able to arrange for the output of your schema processor to be piped into your XSLT 1.0 processor. For example I think this will happen if you implement the validation as a JAXP ValidatorHandler (but you're using C++, I don't know about that).
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference