Just to clarify for other readers:
The name= attribute on <input> elements is not deprecated in XHTML 1, and still means the same thing that it means in HTML. It is deprecated on <form> elements in both document types. (See the HTML 4.01 specification, sections §17.2 - §17.4; particularly the second line of §17.2, and the lines describing the name= attribute for <form> and <input> elements respectively in the other two sections). The definitive positions wrt XHTML 1 are the DTD entries for form and input elements.
Incidentally, HTML 5 as it currently stands also use the name= attribute to name <input> elements, while XHTML 2 uses XForms instead (where the closest analogue is the ref= attribute).
The id= attribute provides a document-unique identifier for the element, while the name= attribute names the form field the <input> element represents (or, in the case of radio buttons particularly, the form field represented by multiple <input> elements - do that with an id!). Quite different beasts, in other words.
It was using the same attribute ("name") for different purposes (naming an element and naming a form field), and using different attributes ("id" and "name") for the same purpose (naming an element) that the deprecation is intended to fix. The XHTML specification notes that some older browsers still get them confused when XHTML is served as HTML, and end up using the wrong one in some situations, which causes problems if they have different values. This issue and the issue of what type of value the attributes can contain is addressed in appendix C.8. The upshot of that discussion is that id="foo[a]" is illegal as david64 says (both in XHTML and HTML), name="foo[a]" is legal in <input> elements, and illegal in <form>, <a> and the other elements listed there (where the whole attribute is deprecated anyway) because they would be illegal values in id= attributes.