HTML5错误,有谁知道这意味着什么?

时间:2012-02-26 12:19:10

标签: html html5 w3c-validation

我正在使用HTML5,并且在验证过程中,此错误贯穿我的网页。我也在我的代码中使用PHP,我不知道这是否导致错误。错误是:

  

在此上下文中,元素li不允许作为元素div的子元素

这是一个引发此错误的DIV:

<div class="signin">
<?php

if (isset($_SESSION['userID'])){

echo"
<li><a href='logout.php'>Logout</a></li>";}

else{ echo "
<li><a href='signin.php'>Sign in</a></li>
<li><a href='register.php'>Register</a></li>
  ";}?>
</div>

这是另一个:

    <div class="navigation">


<li class="navbutton <?php if($navsection == 'home') {echo ' current';}?>" id="navbuttonleft" >
  <a href="index.php">Home</a></li>

    <li class="navbutton  <?php if($navsection == 'products') {echo ' current';}?>">
      <a href="products.php?main=go">Products</a></li>

          <li class="navbutton" <?php echo ($navsection == 'myaccount') ? ' class="current"' : ''; ?>>
          <a href="myaccount.php">My Account</a></li>

             <li class="navbutton" <?php echo ($navsection == 'about') ? ' class="current"' : ''; ?>>
             <a href="aboutus.php">About us</a></li>

                 <li class="navbutton" <?php echo ($navsection == 'contact') ? ' class="current"' : ''; ?>>
                  <a href="contactus.php">Contact Us</a></li>

                        <li class="navbutton" <?php echo ($navsection == 'sitemap') ? ' class="current"' : ''; ?>>
                          <a href="sitemap.php">Site Map</a></li>



</div>

任何建议都表示赞赏。

4 个答案:

答案 0 :(得分:2)

HTML(甚至HTML5)遵循规则,通过这些规则可以嵌套元素以在语义上构建文档。在您的情况下,错误意味着您忘记将<li>元素包装到<ul><ol><menu>元素中,例如你忘了表示列表的开头和结尾。

引用http://dev.w3.org/html5/html-author/#the-li-element

  

4.3.5.9 li元素

     

li元素代表一个列表项。

     

开始标记:必填
  结束标记:可选
  类别:无。
  包含者:

     
      
  • 内部元素。
  •   
  • 内部ul元素。
  •   
  • 内部菜单元素。
  •   
     

内容模型:流量内容。

实施例

<ul>
   <li>Unordered First Item with Ordered Sublist
       <ol>
           <li>Ordered First Item</li>
           <li>Ordered Second Item</li>
           <li>Ordered Third Item</li>
       </ol>
   <li>Unordered Second Item</li>
   <li>Unordered Third Item</li>
</ul>

输出

       
  • 带有序子列表的无序第一项    
             
    1. 订购第一件物品
    2.        
    3. 订购第二项
    4.        
    5. 订购第三项
    6.        
    7. 无序第二项
    8.    
    9. 无序第三项

答案 1 :(得分:1)

你不能把李作为div的子元素。它总是需要在<ul><ol>

答案 2 :(得分:1)

我认为LI应该在UL或OL标签内

答案 3 :(得分:1)

如前所述:<li>应始终嵌入<ul><ol>标签中! 试试这个:

<div class="signin">
<?php

if (isset($_SESSION['userID'])){

echo"
<ul><li><a href='logout.php'>Logout</a></li></ul>";}

else{ echo "
<ul>
  <li><a href='signin.php'>Sign in</a></li>
  <li><a href='register.php'>Register</a></li>
</ul>
  ";}?>
</div>

另一个:

< nav class = "navigation" >
  <ul>
    < li class = "navbutton <?php if($navsection == 'home') {echo ' current';}?>"
id = "navbuttonleft" > < a href = "index.php" > Home < /a></li >

    < li class = "navbutton  <?php if($navsection == 'products') {echo ' current';}?>" > < a href = "products.php?main=go" > Products < /a></li >

    < li class = "navbutton" < ? php echo($navsection == 'myaccount') ? ' class="current"' : ''; ? >> < a href = "myaccount.php" > My Account < /a></li >

    < li class = "navbutton" < ? php echo($navsection == 'about') ? ' class="current"' : ''; ? >> < a href = "aboutus.php" > About us < /a></li >

    < li class = "navbutton" < ? php echo($navsection == 'contact') ? ' class="current"' : ''; ? >> < a href = "contactus.php" > Contact Us < /a></li >

    < li class = "navbutton" < ? php echo($navsection == 'sitemap') ? ' class="current"' : ''; ? >> < a href = "sitemap.php" > Site Map < /a></li >
  </ul>
< /nav>​

请注意,我将'div'更改为'nav',因为这是在HTML5中用于导航块的首选元素。