else if ("html".equals(name) || "xhtml".equals(name)) { return (version == null || "".equals(version) || "2.0".equals(version)); }
  public boolean hasFeature(String name, String version)  {    if (name.length() == 0)      {        return false;      }    name = name.toLowerCase();    if (name.charAt(0) == '+')      {        name = name.substring(1);      }        if ("xml".equals(name) || "core".equals(name))      {        return (version == null ||                "".equals(version) ||                "1.0".equals(version) ||                "2.0".equals(version) ||                "3.0".equals(version));            }    else if ("ls".equals(name) || "ls-async".equals(name))      {        return (version == null ||                "".equals(version) ||                "3.0".equals(version));      }    else if ("events".equals(name)             || "mutationevents".equals(name)             || "uievents".equals(name)             // || "mouseevents".equals(name)             || "htmlevents".equals(name))      {        return (version == null ||                "".equals(version) ||                "2.0".equals(version));	        // Extension:  "USER-" prefix event types can        // be created and passed through the DOM.      }    else if ("user-events".equals(name))      {        return (version == null ||                "".equals(version) ||                "0.1".equals(version));	// NOTE:  "hasFeature" for events is here interpreted to	// mean the DOM can manufacture those sorts of events,	// since actually choosing to report the events is more	// often part of the environment or application.  It's	// only really an issue for mutation events.      }    else if (DomNode.reportMutations             && "traversal".equals(name))      {        return (version == null ||                "".equals(version) ||		"2.0".equals(version));      }    else if ("xpath".equals(name))      {        return (version == null ||                "".equals(version) ||                "3.0".equals(version));      }    // views    // stylesheets    // css, css2    // range        return false;  }