Sen. John McCain has won the Virginia Republican primary in an unexpectedly close race with Mike Huckabee.
McCain wins Virginia Republican primary