Search code examples
htmlxhtmlw3cw3c-validationsemantic-markup

Can we use <a> directly in the body, or it should always in any block level tag? See example (XHTML)


Which is right? This:

<h2>heading 2</h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 1</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 2</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 3</a></p>
<h2>heading 2 </h2>
<p><a href="#" target="_blank" title="Opens in a new window">link 4</a></p>

or this:

<h2>heading 2</h2>
<a href="#" target="_blank" title="Opens in a new window">link 1</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 2</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 3</a>
<h2>heading 2 </h2>
<a href="#" target="_blank" title="Opens in a new window">link 4</a>

Solution

  • @Jitendra, I agree with your point .. but only if you are using strict.dtd (HTML/XHTML)
    According to W3C recommendation(for strict dtd) .. the tag <a> must be used in a block element.

    Look at the following example:

    <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <html>
     <head>
       <meta content="text/html; charset=utf-8" http-equiv="content-type"/>
       <title>example</title>
     </head>
     <body>You don't have sufficient privileges to access the page.<a href="www.google.co.in">Click here</a> to go back.
     </body>
    </html>
    

    The above code produces error while doing HTML validation .. saying

    document type does not allow element "A" here; missing one of "P", "H1", "H2", "H3", "H4", "H5", "H6", "PRE", "DIV", "ADDRESS" start-tag
    

    Making the dtd as loose/transitional you can get rid of the error .. For Strict HTML or Strict XHTML this error is obvious ..

    Hope it helped .. :)

    regards-Infant Pro