Name e id hanno due funzioni completamente diverse, anche se in futuro, nelle intenzioni del W3C, c'è di deprecare name in favore di id. Name serve per identificare un target (tipico caso dei link che devono aprire pagine in un frame diverso o anche delle àncore all'interno della pagina stessa). Id serve ad identificare univocamente un elemento, ma non perché il codice XHTML possa referenziarsi ad esso, bensì per rendere identificabile l'elemento al CSS che dovrà applicare ad esso regole particolari. C'è da dire che ad oggi le àncore e i target non sono supportati attraverso l'id, quindi usare name è praticamente obbligatorio in certi casi. In futuro invece pare che id farà anche le veci di name. Dato che il DOM standard usa ECMAScript per identificare un elemento tramite il suo id, la funzione di name in questo linguaggio è già venuta meno. Ma il codice XHTML ancora ha bisogno del name per riferirsi ad elementi di se stesso (elementi che esistono ancora solo in XHTML Transitional e Frameset e che spariranno del tutto in XHTML 1.1, come già sono spariti in XHTML 1.0 Strict).