anulando minOccurs de un grupo

Tengo una situación en la que hay un tipo base que no "poseo" y permite que todos los elementos secundarios sean opcionales. Desde una perspectiva empresarial general, esto tiene sentido. Por ejemplo, digamos que fue:

<xs:complexType name="BaseType">
    <xs:sequence>
        <xs:element name="id" type="xs:string" minOccurs="0"/>
        <xs:element name="name" type="xs:string" minOccurs="0"/>
    </xs:sequence>
</xs:complexType>

Una instancia de este tipo estará contenida en un tipo contenedor que utiliza mi proceso.

<xs:complexType name="MyType">
    <xs:sequence>
        <xs:element name="Widget" type="BaseType"/>
        ...other stuff...
    <xs:sequence>
</xs:complexType>

Sin embargo, para mis propósitos particulares, necesito que el elemento 'id' en un Tipo de Base esté siempre presente. Puedo aplicar esto en el código que lo consume, por supuesto, pero ¿hay alguna manera de representarlo en el xsd?

EDITAR Se me olvidó el otro. Hay otra situación similar, donde los elementos que estoy usando están en un grupo en lugar de en un tipo base.

<xs:group name="Address-Group">
    <xs:sequence>
        <xs:element name="street" type="xs:string" minOccurs="0"/>
        <xs:element name="city" type="xs:string" minOccurs="0"/>
        ...etc....
    </xs:sequence>
</xs:group>

Si empleé uno de estos en MiTipo, tendría la misma pregunta sobre tratar de anular minOccurs para algo como 'ciudad'.

Respuestas a la pregunta(1)

Su respuesta a la pregunta