In XSD 1.0, any extension of a base type creates a sequence whose first member is the old content model and whose second member is the top of the extension's addition to the content model. So the effective content model of your extension of cockpit_base_action is
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="_output"
minOccurs="0"
maxOccurs="unbounded"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="to" minOccurs="0"/>
<xs:element name="from" minOccurs="0"/>
</xs:choice>
</xs:sequence>
In XSD 1.1, you can change the base type to use xs:all, and use xs:all in the extension, to get the effect you want.
Or (in either 1.0 or 1.1), you can change the extension to accept the language you want. Something like this should have the effect you seem to desire:
<xs:extension base="cockpit_base_action">
<xs:sequence minOccurs="0">
<xs:choice>
<xs:element name="to">
<xs:element name="from"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="_output"/>
<xs:element name="to">
<xs:element name="from"/>
</xs:choice>
</xs:sequence>
</xs:extension>
I've omitted the occurrence indicators on the children of the choice elements, since they have no effect on the language accepted: they are necessarily optional when the containing choice (or the sequence containing it) is optional; they can necessarily repeat without bound, when the containing choice can do so.