Probably the biggest difference is that you can be completely trained in scrum without even mentioning software. It is more about the process of choosing what software to write and when to write it rather than how.
Conversely, extreme programming is primarily about the how, and specifically recommends certain programming practices, taken to the extreme. Peer reviews are a good thing, so take that to the extreme and do pair programming. Tests are too often forgotten, so take that to the extreme and write them first with TDD. Long release cycles are problematic, so take it to the extreme by being ready to release every iteration. Integration is easier the more frequently you do it, so take it to the extreme and do continuous integration.
Since scrum doesn't say anything about the "how," a lot of scrum teams eventually adopt XP practices, so you will see a lot of overlap. At my company, some scrum teams are essentially indistinguishable from XP teams, where others are pure scrum, and others pick and choose where appropriate. For example, they might do TDD for new development, but not for maintaining legacy code.
I would recommend for any team to get trained in both, but to not try to worry about being "pure" one way or the other. Your team is going to work best when it adapts to find its own style.