With a 20 gig drive and XP taking a LOT of space, that is a tall order.
I would load XP on a 13 gig C drive with the drive formatted as FAT32. Leave the rest of the space unpartitioned. When you load Linux it will create a partition for it and a swap partition to take up the remaining space. You will also automatically get a boot loader installedto choose your O/S at boot up.
That's really cramping the space, but it would be workable. Linux can read and write to FAT32 with no problem (not so with NTFS), so the data could be accessed by either O/S. A separate XP partition/data partition has no real advantage.
What Linux are you thinking of?