If the as attribute is a QName, the QName must identify an atomic type. The type attribute is always a QName, and this may be any type defined in an imported schema: complex types are allowed as well as all three varieties of simple type; that is list types, union types, and atomic types.
The as attribute can include an occurrence indicator ( ? , * , or + ). The type attribute never includes an occurrence indicator.
The as attribute may define node kinds, for example node() , element() , or comment() . Such constructs are never used in the type attribute.