Visual Studio doesn't like on-page anchor tags:
Validation (XHTML 1.0 Transitional): Attribute 'name' is considered outdated. A newer construct is recommended.
I'm using name
attributes in this way…
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemalocation="http://www.w3.org/MarkUp/SCHEMA/xhtml11.xsd" xml:lang="en">
...
<body>
...
<p>On this page…</p>
<ul>
<li><a href="#one">Section One</a></li>
...
</ul>
...
<h2><a name="one">Section One</a></h2>
...
</body>
</html>
Is there really a more-modern way of doing this? Or is Visual Studio full of crap?
Yes it is outdated. You should replace with the "id" attribute.
Quoting w3schools page:
http://www.w3schools.com/Xhtml/xhtml_syntax.asp
I believe the proper way to do it is <a id="one">
Until
<a name="..."></a>
is no longer supported by the (X)HTML standard you are using--and not just deprecated--it may be safest to use bothname
andid
on anchors linking to a part of the same page. From the W3C's XHTML 1 spec:But here http://www.w3.org/TR/html4/struct/links.html#h-12.2.3 I read this: "Some older user agents don't support anchors created with the id attribute." So?
I believe the modern approach is to use the
id
attribute, which would be evaluated as an anchor. For example, if you changedto
You would still address it as
page.html#one
.name= attributes are for labeling elements in a form, and can only be used on <form> elements (input, textarea, select etc). For everything else, ID= is used. Exactly why the W3C folks thought two different ways of naming an element (with different sets of allowable characters) were needed is not readily known.