Resulta que puedes hacerlo (más o menos) pero el método es una mierda.
tuvo que hacer dos tipos complejos (uno con la etiqueta Aprobado y otra sin), cambiar el elemento raíz y permitir la conmutación entre los dos tipos de esta manera:
<xs:element name="ArchivedFormulation">
<xs:complexType>
<xs:choice>
<xs:element name="ApprovedFormulation" type="ApprovedFormulation" />
<xs:element name="NonApprovedFormulation" type="NonApprovedFormulation" />
</xs:choice>
</xs:complexType>
pudo añadir el complejo tipos que usan herencia XSD.
<xs:complexType name="ApprovedFormulation">
<xs:complexContent>
<xs:extension base="NonApprovedFormulation">
<xs:sequence>
<xs:element name="Approved" minOccurs="1" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="ApprovedBy" type="xs:string" />
<xs:element name="ApprovedOn" type="xs:date" />
</xs:sequence>
<xs:attribute name="IsApproved" type="xs:boolean" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:extension>
</xs:complexContent>
Eso me dio lo que quería.
No es posible en XSD, pero que podría ser capaz de expresar que el uso de Schematron (http://www.schematron.com/) o algo parecido. –