HTML - XHTML


XHTML 是以 XML 格式编写的 HTML。


什么是 XHTML?

  • XHTML 指的是可扩展超文本标记语言
  • XHTML 与 HTML 4.01 几乎是相同的
  • XHTML 是更严格更纯净的 HTML 版本
  • XHTML 是以 XML 应用的方式定义的 HTML
  • XHTML 是 2001 年 1 月发布的 W3C 推荐标准
  • XHTML 得到所有主流浏览器的支持

为什么使用 XHTML?

因特网上的很多页面包含了"糟糕"的 HTML。

如果在浏览器中查看,下面的 HTML 代码运行起来非常正常(即使它并未遵守 HTML 规则):

<html> <head> <meta charset="utf-8"> <title>这是一个不规范的 HTMLtitle> <body> <h1>不规范的 HTML <p>这是一个段落 body>

XML 是一种必须正确标记且格式良好的标记语言。

如果希望学习 XML,请阅读我们的 XML 教程

今日的科技界存在一些不同的浏览器技术。其中一些在计算机上运行,而另一些可能在移动电话或其他小型设备上运行。小型设备往往缺乏解释"糟糕"的标记语言的资源和能力。

所以 - 通过结合 XML 和 HTML 的长处,开发出了 XHTML。XHTML 是作为 XML 被重新设计的 HTML。


与 HTML 相比最重要的区别:

文档结构

  • XHTML DOCTYPE 是强制性的
  • 中的 XML namespace 属性是强制性的
  • 、、 以及 <body> 也是<em>强制性的</em></li> </ul> <h3>元素语法</h3> <ul> <li>XHTML 元素必须<em>正确嵌套</em></li> <li>XHTML 元素必须始终<em>关闭</em></li> <li>XHTML 元素必须<em>小写</em></li> <li>XHTML 文档必须有<em>一个根元素</em></li> </ul> <h3>属性语法</h3> <ul> <li>XHTML 属性必须使用<em>小写</em></li> <li>XHTML 属性值必须用<em>引号包围</em></li> <li>XHTML 属性最小化也是<em>禁止的</em></li> </ul><hr> <h2><!DOCTYPE ....>是强制性的</h2> <p>XHTML 文档必须进行 XHTML 文档类型声明(XHTML DOCTYPE declaration)。</p> <p>您可以在菜鸟教程的标签参考手册中找到完整的 <a href="/tags/tag-doctype.html">XHTML 文档类型。</a></p> <p><html>, <head>, <title>, 和 <body> 元素也必须存在,并且必须使用 <html> 中的 xmlns 属性为文档规定 xml 命名空间。</p> <p>下面的例子展示了带有最少的必需标签的 XHTML 文档:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-code">!</span><span class="hl-var">DOCTYPE</span><span class="hl-code"> </span><span class="hl-var">html</span><span class="hl-code"> </span><span class="hl-var">PUBLIC</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">-//W3C//DTD XHTML 1.0 Transitional//EN</span><span class="hl-quotes">"</span><span class="hl-code"> </span><span class="hl-quotes">"</span><span class="hl-string">http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">html</span><span class="hl-code"> </span><span class="hl-var">xmlns</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">http://www.w3.org/1999/xhtml</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">head</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">meta</span><span class="hl-code"> </span><span class="hl-var">charset</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">utf-8</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">title</span><span class="hl-brackets">></span><span class="hl-code">文档标题</span><span class="hl-brackets"></</span><span class="hl-reserved">title</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"></</span><span class="hl-reserved">head</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">body</span><span class="hl-brackets">></span><span class="hl-code"> 文档内容 </span><span class="hl-brackets"></</span><span class="hl-reserved">body</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"></</span><span class="hl-reserved">html</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>XHTML 元素必须合理嵌套</h2> <p>在 HTML 中,一些元素可以不互相嵌套,像这样:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">b</span><span class="hl-brackets">></span><span class="hl-brackets"><</span><span class="hl-reserved">i</span><span class="hl-brackets">></span><span class="hl-code">粗体和斜体文本</span><span class="hl-brackets"></</span><span class="hl-reserved">b</span><span class="hl-brackets">></span><span class="hl-brackets"></</span><span class="hl-reserved">i</span><span class="hl-brackets">></span></div> </div> </div> <p>在 XHTML 中,所有的元素都必须互相合理地嵌套,像这样:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">b</span><span class="hl-brackets">></span><span class="hl-brackets"><</span><span class="hl-reserved">i</span><span class="hl-brackets">></span><span class="hl-code">粗体和斜体文本</span><span class="hl-brackets"></</span><span class="hl-reserved">i</span><span class="hl-brackets">></span><span class="hl-brackets"></</span><span class="hl-reserved">b</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>XHTML 元素必须有关闭标签</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code">这是一个段落 </span><span class="hl-brackets"><</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code">这是另外一个段落</span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code">这是一个段落</span><span class="hl-brackets"></</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code">这是另外一个段落</span><span class="hl-brackets"></</span><span class="hl-reserved">p</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>空元素必须包含关闭标签</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-code">分行:</span><span class="hl-brackets"><</span><span class="hl-reserved">br</span><span class="hl-brackets">></span><span class="hl-code"> 水平线: </span><span class="hl-brackets"><</span><span class="hl-reserved">hr</span><span class="hl-brackets">></span><span class="hl-code"> 图片: </span><span class="hl-brackets"><</span><span class="hl-reserved">img</span><span class="hl-code"> </span><span class="hl-var">src</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">happy.gif</span><span class="hl-quotes">"</span><span class="hl-code"> </span><span class="hl-var">alt</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">Happy face</span><span class="hl-quotes">"</span><span class="hl-brackets">></span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-code">分行:</span><span class="hl-brackets"><</span><span class="hl-reserved">br</span><span class="hl-code"> </span><span class="hl-brackets">/></span><span class="hl-code"> 水平线: </span><span class="hl-brackets"><</span><span class="hl-reserved">hr</span><span class="hl-code"> </span><span class="hl-brackets">/></span><span class="hl-code"> 图片: </span><span class="hl-brackets"><</span><span class="hl-reserved">img</span><span class="hl-code"> </span><span class="hl-var">src</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">happy.gif</span><span class="hl-quotes">"</span><span class="hl-code"> </span><span class="hl-var">alt</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">Happy face</span><span class="hl-quotes">"</span><span class="hl-code"> </span><span class="hl-brackets">/></span></div> </div> </div> <br><hr> <h2>XHTML 元素必须是小写</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">BODY</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">P</span><span class="hl-brackets">></span><span class="hl-code">这是一个段落</span><span class="hl-brackets"></</span><span class="hl-reserved">P</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"></</span><span class="hl-reserved">BODY</span><span class="hl-brackets">></span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">body</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code">这是一个段落</span><span class="hl-brackets"></</span><span class="hl-reserved">p</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"></</span><span class="hl-reserved">body</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>属性名称必须是小写</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">table</span><span class="hl-code"> </span><span class="hl-var">WIDTH</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">100%</span><span class="hl-quotes">"</span><span class="hl-brackets">></span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">table</span><span class="hl-code"> </span><span class="hl-var">width</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">100%</span><span class="hl-quotes">"</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>属性值必须有引号</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">table</span><span class="hl-code"> </span><span class="hl-var">width</span><span class="hl-code">=</span><span class="hl-var">100</span><span class="hl-code">%</span><span class="hl-brackets">></span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">table</span><span class="hl-code"> </span><span class="hl-var">width</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">100%</span><span class="hl-quotes">"</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>不允许属性简写</h2> <p>错误示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">checked</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">readonly</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">disabled</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">option</span><span class="hl-code"> </span><span class="hl-var">selected</span><span class="hl-brackets">></span></div> </div> </div> <p>正确示例:</p> <div class="example"> <div class="example_code"> <div class="hl-main"><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">checked</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">checked</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">readonly</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">readonly</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">input</span><span class="hl-code"> </span><span class="hl-var">disabled</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">disabled</span><span class="hl-quotes">"</span><span class="hl-brackets">></span><span class="hl-code"> </span><span class="hl-brackets"><</span><span class="hl-reserved">option</span><span class="hl-code"> </span><span class="hl-var">selected</span><span class="hl-code">=</span><span class="hl-quotes">"</span><span class="hl-string">selected</span><span class="hl-quotes">"</span><span class="hl-brackets">></span></div> </div> </div> <br><hr> <h2>如何将 HTML 转换为 XHTML</h2> <ol> <li>添加一个 XHTML <!DOCTYPE> 到你的网页中</li> <li>添加 xmlns 属性添加到每个页面的html元素中。 </li> <li>改变所有的元素为小写</li> <li>关闭所有的空元素</li> <li>修改所有的属性名称为小写</li> <li>所有属性值添加引号</li> </ol> <hr> <h2>使用 W3C 验证器来测试你的 XHTML</h2> <form method="get" action="https://validator.w3.org/check" target="_blank"> <p>请在下面的输入框中输入您的网址:</p> <p><input name="uri" size="60" value="https://www.runoob.com"/></p> <input type="submit" value="页面验证"></form> </form> <!-- 其他扩展 --> </div> </div> </div> <div class="cate_right"> <script src="https://www.520ads.com/Public/js/getGoods.js?site_id=9&size=300*300&sign=6f4922f45568161a8cdf4ad2299f6d23"></script> </div> </div> </div> <div class="clear"></div> <input type="hidden" id="uid" value=""> <div class="links w"> <h2 class="h_title"><span><a href="/" target="_blank">[ 申请 ]</a></span>友情链接:</h2> <div class="links_text"> <a href="https://jjj-com.com" target="_blank">传奇私服</a> <a href="https://www.xn--6kr41swoa.tw" target="_blank">南島屋</a> <a href="https://www.my103.com/ml/" target="_blank">My命理学</a> <a href="https://www.kuailian-app.com.cn" target="_blank">快连vpn</a> <a href="https://www.kuailian-go.com.cn" target="_blank">快连vpn</a> <a href="https://didi.seowhy.com" target="_blank">搜外友链</a> <a href="https://www.biquge.mobi" target="_blank">笔趣阁</a> <a href="https://aisi-zhushou.com" target="_blank">爱思助手</a> <a href="https://clashx.cc" target="_blank">ClashX教程</a> <a href="https://www.huihuabaobao.com" target="_blank">绘画宝宝</a> <a href="https://www.peiyinbaobao.com" target="_blank">配音宝宝</a> </div> </div> <footer> <div class="box"> <ul class="footer_nav"> <li><a href="" target="_blank">关于我们</a></li> <li><a href="" target="_blank">服务条款</a></li> <li><a href="" target="_blank">广告服务</a></li> <li><a href="" target="_blank">联系我们</a></li> <li><a href="" target="_blank">网站地图</a></li> <li><a href="" target="_blank">免责声明</a></li> <li><a href="" target="_blank">WAP</a></li> </ul> <p class="copyright">技术支持: <a href="/">武汉快勤科技有限公司</a> <a href="/">XML网站地图</a> 备案号:<a href="http://www.beian.miit.gov.cn/" target="_blank">鄂ICP备18027844号-9</a> <script type="text/javascript" src="//js.users.51.la/21769969.js"></script> </p> </div> </footer> <div class="modal"></div> <div class="login_box"> <div class="login_title"> 立即登录/注册 <img src="/Public/images/close.png" class="login_close"/> </div> <div class="login_content" id="login_scan"> <img src="/Public/images/ewm.png" class="ewm" id="ewm"> <p>微信扫码登录</p> </div> </div> <input type="hidden" id="wx_code" value=""> <div class="gotop"></div> <div class="ajax" id="ajax"></div> </body> </html> <script> function tips(text,reload=0){ $("#ajax").text(text).fadeIn(); setTimeout(function(){ $("#ajax").fadeOut(); if(reload){ location.reload(); } },2000); } function get_ewm(){ $.ajax({ url: '/home/login/get_wx_code.html', type: 'post', dataType:'json', success: function (res) { if(res.ret==1){ $("#wx_code").val(res.wx_code); ewm_login(); $.ajax({ url: 'https://www.qingketang.net/mobile/login_ewm.html', type: 'post', data:"code="+$("#wx_code").val(), dataType:'json', success: function (data) { $("#ewm").attr('src',data.ewm); } }); }else{ window.reload(); } } }); } function ewm_login(){ $(".modal").fadeIn(); $(".login_box").fadeIn(); $("#login_scan").show(); $("#loign_form").hide(); $("#reg_from").hide(); } function form_login(){ $(".modal").fadeIn(); $(".login_box").fadeIn(); $("#login_scan").hide(); $("#loign_form").show(); $("#reg_from").hide(); } function form_reg(){ $(".modal").fadeIn(); $(".login_box").fadeIn(); $("#login_scan").hide(); $("#loign_form").hide(); $("#reg_from").show(); } $(function(){ var win=$(window); //得到窗口对象 var sc=$(document);//得到document文档对象 win.scroll(function() { if (sc.scrollTop() > 700) { $(".gotop").fadeIn(); }else { $(".gotop").fadeOut(); } }); $(".gotop").click(function(){ $('html,body').animate({ scrollTop: 0 },600); }); $(".modal").click(function(){ $(".modal").fadeOut(); $(".login_box").fadeOut(); $("#wx_code").val(); }); $(".login_close").click(function(){ $(".modal").fadeOut(); $(".login_box").fadeOut(); $("#wx_code").val(''); }); $(".login_btn").click(function(){ get_ewm(); }); var c=setInterval(function(){ if($("#wx_code").val()!=''){ $.ajax({ url:'/home/login/ewm_login_ajax.html', type:'post', data:{"code":$("#wx_code").val()}, dataType:'json', success:function(data){ if(data.status==1){ $("#wx_code").val(''); $("#ajax").text(data.info).fadeIn(); setTimeout(function(){ $("#ajax").fadeOut(); location.reload(); },1000); clearInterval(c); } }, }); }else{ } },2000); }); </script> <script> async function copyTextToClipboard(text) { if (navigator.clipboard) { try { await navigator.clipboard.writeText(text); console.log('Text copied to clipboard'); } catch (err) { console.error('Failed to copy text: ', err); // 可以尝试使用 fallback 方案 fallbackCopyToClipboard(text); } } else { // 如果浏览器不支持 navigator.clipboard,则使用 fallback 方案 fallbackCopyToClipboard(text); } } $(function(){ $("pre").each(function(i,e){ console.log($(e).offset().top); var py=$(e).offset().top+10; var px=$(e).offset().left+$(e).width()-60; if($("#uid").val()){ var copybtn='点击复制'; }else{ var copybtn='登录复制'; } $(e).after("<span style='position:absolute;top:"+py+"px;left:"+px+"px;padding:0 8px;border-radius:3px;z-index:222222;cursor:pointer;background:#333;color:#fff;' class='copybtn'>"+copybtn+"</p>"); }); $(".copybtn").click(function(){ if($("#uid").val()){ var text=$(this).prev('pre').find("code").html(); copyTextToClipboard(text); $(this).text('已复制'); }else{ get_ewm(); } }); }); </script>