Thanks a lot for your info.
In response to your question.
1. A master prblic key knows the addresses the master private key (what you don't see) is going to produce. Both of these come from the seed but the master public key has no control over the bitcoins.
OK. But how the online wallet(W2) knows whether the new address is produced by the offline one(W1). I could use the online wallet to send transactions even the address and private key are produced by another wallet, for example, BitCore-Qt wallet. Is there any calculation or algorithm behind the checking?
2. Yes, you can restore everything from the seed.
Since the new addresses is produced after the Wallet is created, and the gap limit is 20 by default. If I recover from the seed, I think only 20 addresses are produced by default. If you are correct, is that possible the new address is not in the 'address' list by default ? I have to create new addresses and wish it shows up.
3. No change_gap_limit should keep generating your addresses. You'll run out of addresses if you don't do that (as an unreasonable number of change addresses will be used that your wallet don't have if offline and not setting a gap limit).