标准HTML里标签的顺序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了标准HTML里标签的顺序相关的知识,希望对你有一定的参考价值。

我看到过好多版本,想找一个标准的
以下标签的顺序:
<!DOCTYPE> , <%@taglib>,<meta>,<link>,<html>

<%@taglib>不是html的,而是jsp的标签,让编译器看的。在服务端的脚本文件里有其它带@标记的一同放在上方。
<!DOCTYPE>用来指定生成的html文件的文档类型,供浏览器参照的。目前有好几个供选择,主要是看网页的用途的。一般都用兼容类型的。
<meta><link>一同放在<head>里面,都不是必须的,顺序也无所谓。
<html>是网页的最顶层。

你可以从DOCTYPE后面的URL地址里面找到相应的schema或dtd,你要是会看的话,里面对html标签有着标准的第一手参考定义。 如:http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd,这个文件可以下载下来。
参考技术A 打开DW新建一个就出来了

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>无标题文档</title>
</head>

<body>
</body>
</html>

Jsp 自定义标签以错误的顺序替换为 html 内容

【中文标题】Jsp 自定义标签以错误的顺序替换为 html 内容【英文标题】:Jsp custom tags get replaced with html content in wrong order 【发布时间】:2014-01-11 00:20:38 【问题描述】:

我在上一堂课中了解到,jsp的自定义标签在评估自定义标签后会被替换为html内容。

但是将这个概念付诸实践,我遇到了以下问题。 我在 jsp 中有 3 个 div ,其中 2 个是静态的,中间 div 中有一个自定义标签。所以中间div的自定义标签生成的html内容只能在中间div替换。

但是,输出提示了其他内容,如果代码有问题,或者问题开始时使用的语句需要修改,请指出。

home.jsp

<div style="height: 80px; background-color: #FFA500;">
    <%@ include file="banner.html"%>
</div>  

<div style="height: 450px;">
    <connect:dbConnector user="root" password="" url="jdbc:mysql://localhost/musicstore" scope="session">
    </connect:dbConnector>

        <connect:Query where="select * from musicstore.songs;">
            <ui:addTable name="musicList">
                <c:forEach var="value" items="$result ">
                    <c:set scope="session" var="currentRow" value="$value "></c:set>
                    <ui:addRow data="currentRow" scope="session">
                    </ui:addRow>
                </c:forEach>
            </ui:addTable>
        </connect:Query>
</div>

<div style="height: 80px; background-color: #FFA500;">Footer
    content</div>

我可以在网络浏览器上看到的html内容是

<table border="1" name=" musicList ">
    <tr>    <td>Tum hi ho</td>
        <td>Arjit Singh</td>
        <td>45</td></tr>
    <tr>    <td>Manjha</td>
        <td>Amit Trivedi</td>
        <td>30</td></tr>
    <tr>    <td>Ranjhanna</td>
        <td>A.R Rehman</td>
        <td>25</td></tr>
    <tr>    <td>Sawar Loon</td>
        <td>Monali Thankur</td>
        <td>20</td></tr>
</table>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
    <div style="height: 80px; background-color: #FFA500;">
<img src="/WEB-INF/resources/music_banner.png" ></img>
    </div>  
    
    <div style="height: 450px;">
        
    </div>
    
    <div style="height: 80px; background-color: #FFA500;">Footer
        content</div>
</body>
</html>

AddRowTag.java

public class AddRowTag extends TagSupport 
        // some getter, setter and other utility methods here.
@Override
public int doStartTag() throws JspException 
    try 
        System.out.println("AddRowTag--> doStartTag");
        Row content = getDataToDisplay();
        StringBuilder htmlContent = new StringBuilder();
        
        htmlContent.append(startTableRow);
                    
        htmlContent.append(startTableData);
        htmlContent.append(content.getTitle());
        htmlContent.append(endableData);
        
        htmlContent.append(startTableData);
        htmlContent.append(content.getArtist());
        htmlContent.append(endableData);

        htmlContent.append(startTableData);
        htmlContent.append(content.getPrice());
        htmlContent.append(endableData);

        htmlContent.append(endableRow);

        System.out.println(htmlContent.toString());
        pageContext.getResponse().getWriter().print(htmlContent);
     catch (IOException e) 
        e.printStackTrace();
    
    return SKIP_BODY;



总结问题:

    在哪里(在转换代码(html 代码)放置位置的上下文中)jsp 自定义标记代码放置在最终的 html 文件中。 如果我想在自定义标签的基础上更新中间 div,我需要在我当前的当前 jsp 代码中修改什么。

任何建议/解释都将受到高度赞赏。

【问题讨论】:

问题可能出在标签本身。我的猜测是它直接写入响应输出流或写入器,绕过 JSP 写入器,它会做一些缓冲。要确认并提出修复建议,请发布代码。旁注:为什么使用会话范围将当前行存储在迭代中?这就是页面范围的用途。 @JBNizet 您在Side Note 中提出的观点是正确的,我需要使用他们的页面范围。另请参阅问题中的编辑,我已经发布了 AddRowTag 的代码。 【参考方案1】:

标签不应直接写入响应。通过这样做,它绕过了 JspWriter,它也写入响应但缓冲其输出。

替换

pageContext.getResponse().getWriter().print(htmlContent);

通过

pageContext.getOut().print(htmlContent);

【讨论】:

以上是关于标准HTML里标签的顺序的主要内容,如果未能解决你的问题,请参考以下文章

在html中使用js

html文档的加载顺序是怎么样的?

HTML 头部标签顺序错误

Jsp 自定义标签以错误的顺序替换为 html 内容

如何用 noteexpress 让文章中的参考文献按照 出现的前后顺序 排列

a标签伪类顺序以及jQuery选择器