2007年5月21日星期一

WEB标准教程第6天:XHTML代码规范

.所有的标记都必须要有一个相应的结束标记
  以前在HTML中,你可以打开许多标签,例如

  • 而不一定写对应的

  • 来关闭它们。但在XHTML中这是不合法的。XHTML要求有严谨的结构,所有标签必须关闭。如果是单独不成对的标签,在标签最后加一个"/"来关闭它。例如:

      
    网页设计师

      2.所有标签的元素和属性的名字都必须使用小写
      
      与HTML不一样,XHTML对大小写是敏感的,和<TITLE>是不同的标签。XHTML要求所有的标签和属性的名字都必须使用小写。例如:<BODY>必须写成<body> 。大小写夹杂也是不被认可的,通常dreamweaver自动生成的属性名字"onMouseOver"也必须修改成"onmouseover"。<br /><br />  3.所有的XML标记都必须合理嵌套<br /><br />  同样因为XHTML要求有严谨的结构,因此所有的嵌套都必须按顺序,以前我们这样写的代码:<br /><br />  <p><b></p></b> <br /><br />  必须修改为:<br /><br />  <p><b></b></p> <br /><br />  就是说,一层一层的嵌套必须是严格对称。<br /><br />  4.所有的属性必须用引号""括起来<br /><br />  在HTML中,你可以不需要给属性值加引号,但是在XHTML中,它们必须被加引号。例如:<br /><br />  <height=80> <br />  <br />  必须修改为:<br /><br />  <height="80"> <br /><br />  特殊情况,你需要在属性值里使用双引号,你可以用",单引号可以使用',例如:<br /><br />  <alt="say'hello'"> <br /><br />  5.把所有<和&特殊符号用编码表示<br />  <br />  任何小于号(<),不是标签的一部分,都必须被编码为& l t ; <br /><br />  任何大于号(>),不是标签的一部分,都必须被编码为& g t ; <br /><br />  任何与号(&),不是实体的一部分的,都必须被编码为& a m p; <br /><br />  注:以上字符之间无空格。<br /><br />  6.给所有属性赋一个值<br /><br />  XHTML规定所有属性都必须有一个值,没有值的就重复本身。例如:<br /><br />  <td nowrap> <input type="checkbox" name="shirt" value="medium" checked> <br />必须修改为:<br /><br />  <td nowrap="nowrap"> <input type="checkbox" name="shirt" value="medium" checked="checked"> <br /><br />  7.不要在注释内容中使“--”<br /><br />  “--”只能发生在XHTML注释的开头和结束,也就是说,在内容中它们不再有效。例如下面的代码是无效的:<br /><br />  <!--这里是注释-----------这里是注释--> <br />  <br />  用等号或者空格替换内部的虚线。<br /><br />  <!--这里是注释============这里是注释--> <br /><br />  以上这些规范有的看上去比较奇怪,但这一切都是为了使我们的代码有一个统一、唯一的标准,便于以后的数据再利用。 <div style='clear: both;'></div> </div> <div class='post-footer'> <div class='post-footer-line post-footer-line-1'> <span class='post-author vcard'> <span class='fn' itemprop='author' itemscope='itemscope' itemtype='http://schema.org/Person'> <meta content='https://www.blogger.com/profile/06161294252462859663' itemprop='url'/> <a href='https://www.blogger.com/profile/06161294252462859663' rel='author' title='author profile'> <span itemprop='name'>jjyyyyjj</span> </a> </span> </span> <span class='post-timestamp'> 时间: <meta content='http://yanjiandi.blogspot.com/2007/05/web6xhtml.html' itemprop='url'/> <a class='timestamp-link' href='http://yanjiandi.blogspot.com/2007/05/web6xhtml.html?m=1' rel='bookmark' title='permanent link'><abbr class='published' itemprop='datePublished' title='2007-05-21T08:24:00-07:00'>08:24</abbr></a> </span> <span class='post-comment-link'> </span> </div> <div class='post-footer-line post-footer-line-2'> </div> </div> </div> <div class='comments' id='comments'> <a name='comments'></a> <h4>没有评论:</h4> <div id='Blog1_comments-block-wrapper'> <dl class='avatar-comment-indent' id='comments-block'> </dl> </div> <p class='comment-footer'> <div class='comment-form'> <a name='comment-form'></a> <h4 id='comment-post-message'> <a href='javascript:void(0)' id='Blog1_comment-editor-toggle-link'>发表评论</a></h4> <p> </p> <a href='https://www.blogger.com/comment/frame/8828808261044506504?po=6629765521750597675&hl=zh-CN&saa=85391&origin=http://yanjiandi.blogspot.com&m=1' id='comment-editor-src'></a> <iframe allowtransparency='true' class='blogger-iframe-colorize blogger-comment-from-post' frameborder='0' height='410px' id='comment-editor' name='comment-editor' src='' style='display: none' width='100%'></iframe> <script src='https://www.blogger.com/static/v1/jsbin/2830521187-comment_from_post_iframe.js' type='text/javascript'></script> <script type='text/javascript'> BLOG_CMT_createIframe('https://www.blogger.com/rpc_relay.html'); </script> </div> </p> </div> </div> </div> </div> </div> <div class='blog-pager' id='blog-pager'> <div class='mobile-link-button' id='blog-pager-newer-link'> <a class='blog-pager-newer-link' href='http://yanjiandi.blogspot.com/2007/05/web7css.html?m=1' id='Blog1_blog-pager-newer-link' title='较新的博文'>‹</a> </div> <div class='mobile-link-button' id='blog-pager-older-link'> <a class='blog-pager-older-link' href='http://yanjiandi.blogspot.com/2007/05/web5head.html?m=1' id='Blog1_blog-pager-older-link' title='较早的博文'>›</a> </div> <div class='mobile-link-button' id='blog-pager-home-link'> <a class='home-link' href='http://yanjiandi.blogspot.com/?m=1'>主页</a> </div> <div class='mobile-desktop-link'> <a class='home-link' href='http://yanjiandi.blogspot.com/2007/05/web6xhtml.html?m=0'>查看网络版本</a> </div> </div> <div class='clear'></div> </div></div> </div> </div> <div class='column-left-outer'> <div class='column-left-inner'> <aside> </aside> </div> </div> <div class='column-right-outer'> <div class='column-right-inner'> <aside> </aside> </div> </div> </div> <div style='clear: both'></div> <!-- columns --> </div> <!-- main --> </div> </div> <div class='main-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> <footer> <div class='footer-outer'> <div class='footer-cap-top cap-top'> <div class='cap-left'></div> <div class='cap-right'></div> </div> <div class='fauxborder-left footer-fauxborder-left'> <div class='fauxborder-right footer-fauxborder-right'></div> <div class='region-inner footer-inner'> <div class='foot no-items section' id='footer-1'></div> <!-- outside of the include in order to lock Attribution widget --> <div class='foot section' id='footer-3' name='页脚'><div class='widget AdSense' data-version='1' id='AdSenseMobileFOOTER'> <div class='widget-content'> <script type="text/javascript"><!-- google_ad_client="pub-3001615183140193"; google_ad_format="300X250_mb"; google_ad_type="text_image"; google_ad_width=300; google_ad_height=250; google_ad_host="pub-1556223355139109"; google_ad_host_channel="00000"; google_color_border="FEF6EE"; google_color_bg="FEF6EE"; google_color_link="634320"; google_color_url="C8AB8F"; google_color_text="BA8247"; //--></script> <script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> <div class='clear'></div> </div> </div><div class='widget Profile' data-version='1' id='Profile1'> <h2>我的简介</h2> <div class='widget-content'> <dl class='profile-datablock'> <dt class='profile-data'> <a class='profile-name-link g-profile' href='https://www.blogger.com/profile/06161294252462859663' rel='author' style='background-image: url(//www.blogger.com/img/logo-16.png);'> jjyyyyjj </a> </dt> </dl> <a class='profile-link' href='https://www.blogger.com/profile/06161294252462859663' rel='author'>查看我的完整个人资料</a> <div class='clear'></div> </div> </div><div class='widget Attribution' data-version='1' id='Attribution1'> <div class='widget-content' style='text-align: center;'> 由 <a href='https://www.blogger.com' target='_blank'>Blogger</a> 提供支持. </div> <div class='clear'></div> </div></div> </div> </div> <div class='footer-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </footer> <!-- content --> </div> </div> <div class='content-cap-bottom cap-bottom'> <div class='cap-left'></div> <div class='cap-right'></div> </div> </div> </div> <script type='text/javascript'> window.setTimeout(function() { document.body.className = document.body.className.replace('loading', ''); }, 10); </script> <script type="text/javascript" src="https://www.blogger.com/static/v1/widgets/654365252-widgets.js"></script> <script type='text/javascript'> var BLOG_BASE_IMAGE_URL = 'https://resources.blogblog.com/img';var BLOG_LANG_DIR = 'ltr';window['__wavt'] = 'AAVkm1tViEKxHzS6lKznUpjztz-z:1778688848190';_WidgetManager._Init('//www.blogger.com/rearrange?blogID\x3d8828808261044506504','//yanjiandi.blogspot.com/2007/05/web6xhtml.html?m\x3d1','8828808261044506504'); _WidgetManager._SetDataContext([{'name': 'blog', 'data': {'blogId': '8828808261044506504', 'title': '\u76d0\u78b1\u5730', 'url': 'http://yanjiandi.blogspot.com/2007/05/web6xhtml.html?m\x3d1', 'canonicalUrl': 'http://yanjiandi.blogspot.com/2007/05/web6xhtml.html', 'homepageUrl': 'http://yanjiandi.blogspot.com/?m\x3d1', 'searchUrl': 'http://yanjiandi.blogspot.com/search', 'canonicalHomepageUrl': 'http://yanjiandi.blogspot.com/', 'blogspotFaviconUrl': 'http://yanjiandi.blogspot.com/favicon.ico', 'bloggerUrl': 'https://www.blogger.com', 'hasCustomDomain': false, 'httpsEnabled': true, 'enabledCommentProfileImages': true, 'gPlusViewType': 'FILTERED_POSTMOD', 'adultContent': false, 'analyticsAccountNumber': '', 'encoding': 'UTF-8', 'locale': 'zh-CN', 'localeUnderscoreDelimited': 'zh_cn', 'languageDirection': 'ltr', 'isPrivate': false, 'isMobile': true, 'isMobileRequest': true, 'mobileClass': ' mobile', 'isPrivateBlog': false, 'isDynamicViewsAvailable': true, 'feedLinks': '\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u76d0\u78b1\u5730 - Atom\x22 href\x3d\x22http://yanjiandi.blogspot.com/feeds/posts/default\x22 /\x3e\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/rss+xml\x22 title\x3d\x22\u76d0\u78b1\u5730 - RSS\x22 href\x3d\x22http://yanjiandi.blogspot.com/feeds/posts/default?alt\x3drss\x22 /\x3e\n\x3clink rel\x3d\x22service.post\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u76d0\u78b1\u5730 - Atom\x22 href\x3d\x22https://www.blogger.com/feeds/8828808261044506504/posts/default\x22 /\x3e\n\n\x3clink rel\x3d\x22alternate\x22 type\x3d\x22application/atom+xml\x22 title\x3d\x22\u76d0\u78b1\u5730 - Atom\x22 href\x3d\x22http://yanjiandi.blogspot.com/feeds/6629765521750597675/comments/default\x22 /\x3e\n', 'meTag': '', 'adsenseClientId': 'ca-pub-3001615183140193', 'adsenseHostId': 'ca-host-pub-1556223355139109', 'adsenseHasAds': true, 'adsenseAutoAds': false, 'boqCommentIframeForm': true, 'loginRedirectParam': '', 'view': '', 'dynamicViewsCommentsSrc': '//www.blogblog.com/dynamicviews/4224c15c4e7c9321/js/comments.js', 'dynamicViewsScriptSrc': '//www.blogblog.com/dynamicviews/33b0932eec32fe14', 'plusOneApiSrc': 'https://apis.google.com/js/platform.js', 'disableGComments': true, 'interstitialAccepted': false, 'sharing': {'platforms': [{'name': '\u83b7\u53d6\u94fe\u63a5', 'key': 'link', 'shareMessage': '\u83b7\u53d6\u94fe\u63a5', 'target': ''}, {'name': 'Facebook', 'key': 'facebook', 'shareMessage': '\u5206\u4eab\u5230 Facebook', 'target': 'facebook'}, {'name': 'BlogThis!', 'key': 'blogThis', 'shareMessage': 'BlogThis!', 'target': 'blog'}, {'name': 'X', 'key': 'twitter', 'shareMessage': '\u5206\u4eab\u5230 X', 'target': 'twitter'}, {'name': 'Pinterest', 'key': 'pinterest', 'shareMessage': '\u5206\u4eab\u5230 Pinterest', 'target': 'pinterest'}, {'name': '\u7535\u5b50\u90ae\u4ef6', 'key': 'email', 'shareMessage': '\u7535\u5b50\u90ae\u4ef6', 'target': 'email'}], 'disableGooglePlus': true, 'googlePlusShareButtonWidth': 0, 'googlePlusBootstrap': '\x3cscript type\x3d\x22text/javascript\x22\x3ewindow.___gcfg \x3d {\x27lang\x27: \x27zh_CN\x27};\x3c/script\x3e'}, 'hasCustomJumpLinkMessage': false, 'jumpLinkMessage': '\u9605\u8bfb\u5168\u6587', 'pageType': 'item', 'postId': '6629765521750597675', 'postImageUrl': '../images/logo_w3cn_200x80.gif', 'pageName': 'WEB\u6807\u51c6\u6559\u7a0b\u7b2c6\u5929\uff1aXHTML\u4ee3\u7801\u89c4\u8303', 'pageTitle': '\u76d0\u78b1\u5730: WEB\u6807\u51c6\u6559\u7a0b\u7b2c6\u5929\uff1aXHTML\u4ee3\u7801\u89c4\u8303'}}, {'name': 'features', 'data': {}}, {'name': 'messages', 'data': {'edit': '\u4fee\u6539', 'linkCopiedToClipboard': '\u94fe\u63a5\u5df2\u590d\u5236\u5230\u526a\u8d34\u677f\uff01', 'ok': '\u786e\u5b9a', 'postLink': '\u535a\u6587\u94fe\u63a5'}}, {'name': 'template', 'data': {'name': 'Simple', 'localizedName': '\u7b80\u5355', 'isResponsive': false, 'isAlternateRendering': true, 'isCustom': false, 'variant': 'simplysimple', 'variantId': 'simplysimple'}}, {'name': 'view', 'data': {'classic': {'name': 'classic', 'url': '?view\x3dclassic'}, 'flipcard': {'name': 'flipcard', 'url': '?view\x3dflipcard'}, 'magazine': {'name': 'magazine', 'url': '?view\x3dmagazine'}, 'mosaic': {'name': 'mosaic', 'url': '?view\x3dmosaic'}, 'sidebar': {'name': 'sidebar', 'url': '?view\x3dsidebar'}, 'snapshot': {'name': 'snapshot', 'url': '?view\x3dsnapshot'}, 'timeslide': {'name': 'timeslide', 'url': '?view\x3dtimeslide'}, 'isMobile': true, 'title': 'WEB\u6807\u51c6\u6559\u7a0b\u7b2c6\u5929\uff1aXHTML\u4ee3\u7801\u89c4\u8303', 'description': '.\u6240\u6709\u7684\u6807\u8bb0\u90fd\u5fc5\u987b\u8981\u6709\u4e00\u4e2a\u76f8\u5e94\u7684\u7ed3\u675f\u6807\u8bb0 \u3000\u3000\u4ee5\u524d\u5728HTML\u4e2d\uff0c\u4f60\u53ef\u4ee5\u6253\u5f00\u8bb8\u591a\u6807\u7b7e\uff0c\u4f8b\u5982 \u548c \u800c\u4e0d\u4e00\u5b9a\u5199\u5bf9\u5e94\u7684 \u548c \u6765\u5173\u95ed\u5b83\u4eec\u3002\u4f46\u5728XHTML\u4e2d\u8fd9\u662f\u4e0d\u5408\u6cd5\u7684\u3002XHTML\u8981\u6c42\u6709\u4e25\u8c28\u7684\u7ed3\u6784\uff0c\u6240\u6709\u6807\u7b7e\u5fc5\u987b\u5173\u95ed\u3002\u5982\u679c\u662f\u5355\u72ec\u4e0d\u6210\u5bf9\u7684\u6807\u7b7e\uff0c\u5728\u6807\u7b7e\u6700\u540e\u52a0\u4e00\u4e2a\x22/\x22\u6765\u5173\u95ed\u5b83\u3002\u4f8b\u5982: \u3000\u3000 \u3000\u3000...', 'featuredImage': 'https://lh3.googleusercontent.com/blogger_img_proxy/AEn0k_vcwsYsTRF4qB8u9IJmA_hEotyPPBn20Dqg5yRqhLDEo3lr5mKoFB0t88gb1pY6IoI1cKALE4pLhI9_Op_gwyHiyXdn0Hs', 'url': 'http://yanjiandi.blogspot.com/2007/05/web6xhtml.html?m\x3d1', 'type': 'item', 'isSingleItem': true, 'isMultipleItems': false, 'isError': false, 'isPage': false, 'isPost': true, 'isHomepage': false, 'isArchive': false, 'isLabelSearch': false, 'postId': 6629765521750597675}}]); _WidgetManager._RegisterWidget('_AdSenseView', new _WidgetInfo('AdSenseMobileHEADER', 'header', document.getElementById('AdSenseMobileHEADER'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_HeaderView', new _WidgetInfo('Header1', 'header', document.getElementById('Header1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_BlogView', new _WidgetInfo('Blog1', 'main', document.getElementById('Blog1'), {'cmtInteractionsEnabled': false, 'mobile': true}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AdSenseView', new _WidgetInfo('AdSenseMobileFOOTER', 'footer-3', document.getElementById('AdSenseMobileFOOTER'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_ProfileView', new _WidgetInfo('Profile1', 'footer-3', document.getElementById('Profile1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_AttributionView', new _WidgetInfo('Attribution1', 'footer-3', document.getElementById('Attribution1'), {}, 'displayModeFull')); _WidgetManager._RegisterWidget('_NavbarView', new _WidgetInfo('Navbar1', 'navbar', document.getElementById('Navbar1'), {}, 'displayModeFull')); </script> </body> </html>