The latest versions of Struts (1.2.9 and above) in fact do not support a name attribute in the <html:form> tag. It has been deprecated. This means there's nothing wrong with your tag library declarations. You just need to remove the name and type attributes from your <html:form> tag.
We were also facing the same problem.
The solution to this is to use correct version of the.tld file.
Compare the file
and the file present in struts.jar \META-INF\tlds\struts-html.tld
There must be some differences between these 2 files.
The reason it was working for 2nd code, is because when you put http://struts.apache.org/tags-html then it takes the tld from the JAR file directly. and in previous case it takes from web-inf directory.