Ah, you have met something known as the "Durand Conundrum", formulated back when we decided to use RELAX NG by David Durand; viz the conflict between using the full power of RNG natively, and constraining it with ODD for compatibility.

The conventional answer is to use Schematron, and I can see why thats a problem

> 2. Copy the above RelaxNG snippet into person content

not sustainable, I think, to mix ODD and pure RELAX NG like that. 

> A third possibility that comes to my mind is to add new elements  
> "fullName" and "regName" instead of differentiating via @types. Then I  
> could constrain on (native ODD, without RelaxNG) elements without  
> Schematron and gain code completion as well. Looks like the best of  
> both 1 and 2?!

carefully done, as an authoring/data entry schema, this has a lot to recommend it.
Then normalize the result back to pure TEI P5 for storage and processing.

this side of a complete rethink of ODD, I don't immediately see a fourth way
Sebastian Rahtz      
Information Manager, Oxford University Computing Services
13 Banbury Road, Oxford OX2 6NN. Phone +44 1865 283431

Sólo le pido a Dios
que el futuro no me sea indiferente