After reading the book Waking Dreams and seeing Miraak, I couldn't absorb a dragon's soul. I killed more than 10 dragons and Miraak took all the souls. Is this supposed to happen?
Yes. Miraak steals the souls of dragons when you kill them, all but a few. Until you kill him, you'll only get roughly 10% of all the dragon souls you collect.
Additionally, as per the comments, when you kill Miraak you get all of the souls back, which in all honesty, I find can be quite ridiculous. I played the game for ~100 hours before I finally killed Miraak. I now have over 40 Dragon souls that are completely useless.
The stealing really is supposed to happen because the devs assume you have completed the main plot at this point, and have stockpiled Dragon Souls, but I you can use these tips to avoid it:
- Using Ahzidal's boots of Waterwalking, kill a dragon on the water and SUCC the soul. Miraak cannot appear on water.
- Save before killing a dovah. Keep reloading and killing until Miraak does not steal the soul.
- If you haven't already, go to the ruins of Saering's Watch, on the northern end of the island. Again, save and reload killing the dragon and Draugr. Obtain the first word to Bend Will, "Earth"/"Gol", and unlocking it will make Miraak less annoying. Unlocking the second word, "Mind"/"Hah", will make him even less annoying, and unlocking the third word "Dragon"/"Dov", at the beginning of "At The Summit of Apocrypha", will stop his stealing completely.
He will harvest souls on the mainland, too, so I would try to use the same tactics as listed above.