Normally when discussing type systems we treat a type as denoting a set of (permitted, valid) instances, and the union of two types A and B is the type that permits everything that is in either set: that is, everything that is a valid A or a valid B or both.
I've come to the conclusion that you are using the word "union" to mean something different, and I'm not sure what.
Michael Kay
http://www.saxonica.com/
Author, XSLT Programmer's Reference and XPath 2.0 Programmer's Reference