I would swear here if I didn't assume it was against policy. I registered--irritating--just to post an answer to this thread so other people would not be left hanging like I was. Once the site showed I was logged in, I typed a very long reply and submitted it. Then the page said I wasn't logged in and, amazingly, the back button took me back to a blank form--my entire post was gone. Sigh.
So the community does not get the full post, just an abbreviated re-write:
1. xhtml is case sensitive: <a href="#canada"></a> will NOT work with <a id="Canada"></a> because "Canada" (upper case C) and "canada" (lower case c) are not the same identifier. MAKE SURE YOUR IDENTIFIERS ARE SPELLED AND CAPITALIZED CONSISTENTLY. In the original poster's example, maybe 'anchor-anchor' was misspelled later as 'Anchor-anchor', for example (but s/he didn't bother us with the solution so we may never know...).
2. epubcheck (and the w3 xml validator at
http://validator.w3.org/) may throw errors out about otherwise valid xhtml if there is an unrelated xhtml error found EARLIER in the file. Most of my "fragment identifier" errors were not errors at all, but were being caused by broken xhtml tags thousands of lines above them that made the rest of the file look broken to epubcheck. START AT THE FIRST ERROR listed by epubcheck and fix it before worrying about the later errors listed.