Another HTML-lintで100点を狙う のバックアップ(No.2)


Another HTML-lintについて

 Another HTML-lintはHTML(XHTML)の文法チェックを行うソフトウェアである。(Wikipediaより)
 スミスというアメリカ人が「私は、です、スミス」といったとき、(文法的におかしいな)と思うものの、あ、この人は「私はスミスです」と自己紹介しているんだなと脳内補完して笑顔で握手できるだろう。世の中にあるウェブサイトのHTMLも文法的に間違って書かれているケースが多いものの、ブラウザが「多分こういう意図なんだろうな」と補完して表示してくれるので破綻しない。
 だが、文法的に正しいことに越したことはないので、Another HTML-lintを使ってチェックするわけである。URLかソースを入力するとAnother HTML-lintが設定した独自の点数が表示される。0点以下、マイナス数百点ということもある。

 正確な点数は忘れたが、XOOPSはデフォルトのテーマでは100点にならない。なので100点を取るためにはソースを書き換える必要がある。ほとんどのエラーはマイナス点とともに書かれる解説を読めば直していけるのだが、一部、これはどういうことをいっているんだろう、どうすればいいんだろうという部分があるので簡単に解説していきたい。XOOPSのHTMLは「XHTML1.0 Transitional」という文書型で書かれているが、せっかくなのでより厳格な「XHTML1.0 Strict」での100点を狙っていこう。

「XHTML1.0 では XML宣言をすることが強く求められています。」の修正

 theme.htmlの一番上に、

<{php}>
$ua = $_SERVER['HTTP_USER_AGENT'];
if (ereg("MSIE 6.",$ua) > 0) {
echo '';
} else {
echo '<?xml version="1.0" encoding="任意の文字コード"?>'."\n";
} 
<{/php}>

 を挿入する。

「<script>~</script> 内にコメントを書くと、本当にコメントとして扱われます。」の修正

<script type="text/javascript">
<!--
<{$xoops_js}>
// -->
</script>

 を、

<script type="text/javascript"><{$xoops_js|regex_replace:"/(\/\/\-\->|<!\-\-)/":""}></script>

 に置き換える。JavaScriptは全部ファイル化して外部に置き、リンクを張る形にする。

table、tdなどに関するエラーの修正

 その部分が表でないのなら、<table>、<td>などは<div>などに置き換えてデザインをする。

「<input> を *行目の <form>~</form> 内に書くことはできません。」の修正

 <input>を<p></p>で括る。

 例

<form action="<{$xoops_url}>/modules/search/index.php" method="get">
  <input type="text" name="query" size="20" class="search" value="" />
  <input type="hidden" name="action" value="results" />
  <input type="hidden" name="showcontext" value="1" />
  <input type="submit" value="検索" class="submit" />
</form>

↓

<form action="<{$xoops_url}>/modules/search/index.php" method="get">
<p>
  <input type="text" name="query" size="20" class="search" value="" />
  <input type="hidden" name="action" value="results" />
  <input type="hidden" name="showcontext" value="1" />
  <input type="submit" value="検索" class="submit" />
</p>
</form>

「<input type="~"> には ** 属性を指定するようにしましょう。」の修正

 user_block_login.htmlなどを以下のように修正

     <{$smarty.const._MB_USER_USERNAME}><br />
     <{xoops_input type=text name=uname size=12 value=$block.unamevalue maxlength=25 id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_uname"}><br />
     <{$smarty.const._MB_USER_PASSWORD}><br />
     <{xoops_input type=password name=pass size=12 maxlength=32 id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_pass"}><br />
<!--<label><{xoops_input type=checkbox name=rememberme value=On class=formButton}><{$smarty.const._MB_USER_REMEMBERME}></label><br />-->
     <input type="hidden" name="xoops_redirect" value="<{$xoops_requesturi}>" />
     <{xoops_input type=hidden name=op value=login id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_op"}>
     <{xoops_input type=submit name=submit value=$smarty.const._MB_USER_LOGIN id="`$smarty.const.XOOPS_INPUT_DEFID_PREFIX`block_submit"}><br />

     <{$smarty.const._MB_USER_USERNAME}><br />
    <input name="uname" id="legacy_xoopsform_uname" type="text" size="12" maxlength="25" value="" tabindex="任意の数字" accesskey="任意のアルファベット" /><br />
     <{$smarty.const._MB_USER_PASSWORD}><br />
    <input name="pass" id="legacy_xoopsform_pass" type="password" size="12" maxlength="32" tabindex="任意の数字" accesskey="任意のアルファベット" />
<!--<label><{xoops_input type=checkbox name=rememberme value=On class=formButton}><{$smarty.const._MB_USER_REMEMBERME}></label><br />-->
     <input type="hidden" name="xoops_redirect" value="<{$xoops_requesturi}>" />
    <{xoops_input type=hidden name=op value=login}>
    <input name="submit" id="legacy_xoopsform_submit_login" type="submit" value="ログイン" tabindex="任意の数字" accesskey="任意のアルファベット" /><br />

[PR]