I'm trying to install windows xp on my external hard drive using a compaq laptop. I booted the setup. And when I press on enter it said that there are no drives that is currently on the laptop. Is it possible that the setup does not detect even the internal hard disk if some of the spaces are unallocated? And how do I make the setup detect the external hard drive. Do I need to press something on the keyboard while the setup is still loading the files from the cd?
This is a usb or firewire hard drive? Windows XP won't install to or boot from those disks. End of story. eSATA, on the other hand, might be possible.
Your internal disk is another matter, though. It should be visible to Windows XP, unallocated space or not.
The only exception I can think of (aside from bad hardware, of course) is if you're installing an old version of Windows XP (pre-sp2) to a SATA drive. XP sp1 is old enough to pre-date SATA. Service packs 2 and 3 include the necessary drivers, but if you're starting with an xp disk that came with an old (2004-ish) laptop, it may only have RTM or sp1.
In this (rare) case you might need to watch for a "Hit F6 to load a third party driver" message that appears for a few moments during the initial stages of the loading the installer. At this point, if this is your problem, you will need to use a 3.5 inch floppy to load the driver (and good luck with that).
If this is your problem (There's that "if" again. This is a rare situation.) it's likely easier to get some "borrowed" media with a newer service pack and just use your old product key.
True that USB is a problem as @Joel Coehoorn says. The boot loader drops the USB driver during boot so it often will appear to start loading Windows, then fail. There are some workarounds posted online that suggest that it is possible with SP3 but requires a number or tweaks and registry changes. Sorry I don't have a link handy. eSATA would be better in any case. Faster connection.