Do not confuse what your
IDE wants with what the application wants. In production, the IDE won't be there. You can usually live with IDE errors (sometimes, in fact, you have little choice), but if the webapp isn't done right, it simply won't run right.
XHTML is an XML notation, and in XML, there is the concept of namespaces, where each namespace is identified by prefix tag (such as "h:" or "ui:") and mapped via the xmlns attribute to a URI. The URI provides a unique and unambiguous identifier for an XML tag schema. Kind of like a UUID/GUID, but in more human-readable terms.
The actual prefix itself isn't important, although there are conventions. If I wanted to, I could map the prefix "peterRabbit" to the JSF HTML core tagset and code things like this:
What is important is that the mapping be done properly. Like so:
The URI
http://java.sun.com/jsf/html is compared against meta-information in the component library JARs (jsf-api.jar, for this one, I believe) in order to resolve the tagset schema.
That's basic JSF requirements. Without it, the webapp will fail. Getting Eclipse to not get annoyed with the
http://java.sun.com/jsf/html URI requires configuring Eclipse itself to know where a copy of the associated schema can be found, and that's a question that should be asked in the Eclipse forum.