this is why modelling the structure of xsd is so damnably hard

The following sections specify several sets of XML mapping rules which apply in different circumstances.


- If the <attribute> element information item has <schema> as its parent, then it maps to a global Attribute Declaration as described in Mapping Rules for Global Attribute Declarations (§3.2.2.1).

- If the <attribute> element information item has <complexType> or <attributeGroup> as an ancestor, and the ref [attribute] is absent, and the use [attribute] is not "prohibited", then it maps both to an Attribute Declaration and to an Attribute Use component, as described in Mapping Rules for Local Attribute Declarations (§3.2.2.2). - On Attribute Use components, see Attribute Uses (§3.5).

- If the <attribute> element information item has <complexType> or <attributeGroup> as an ancestor, and the ref [attribute] is ·present·, and the use [attribute] is not "prohibited", then it maps to an Attribute Use component, as described in Mapping Rules for References to Top-level Attribute Declarations (§3.2.2.3).

- If the <attribute> element information item has use='prohibited', then it does not map to, or correspond to, any schema component at all. - Note: The use attribute is not allowed on top-level <attribute> elements, so this can only happen with <attribute> elements appearing within a <complexType> or <attributeGroup> element.

but here it is

it's not my fault it's a mess