XHTML互換なHTML5の書き方まとめ

HTML5をXHTMLにも準拠するように書く方法がW3Cに掲載されてたので、普段使いそうな部分を軽くまとめてみました(2011年3月現在)。この書き方 (Polyglot) にしておくとXMLパーサもXHTMLパーサもHTMLパーサも同じように文書を解釈してくれます。無難かつ綺麗な感じもするので、これからはこれに則ってHTMLを書くことにしてみようと思ってます。

MathMLやSVGに関する部分などは省いてますので詳細は以下を参照してください。
ソース:Polyglot Markup: HTML-Compatible XHTML Documents

概要

PolyglotなHTMLは、

  • ValidなHTMLドキュメントである
  • Well-formedなXMLドキュメントである
  • HTMLとして処理してもXMLとして処理しても同一のDOMを持つ

特定のXML DTDに準拠している必要はありません。

最小必要構成

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <title></title>
  </head>
  <body>
  </body>
</html>

HTML5のDoctypeを使用し、htmlタグには上記ネームスペースを割り当てます。
langとxml:langは両方同じ値を指定します。
文書自体はUTF-8かUTF-16で作成します。(UTF-8推奨)。

普段使いそうな構成

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
  <head>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href="external.css"/>
    <script src="external.js"></script>
    <title></title>
  </head>
  <body>
  </body>
</html>

meta charset=”"は必須ではなく推奨。”utf-8″の部分はCase-insensitive。

タグごとの書き方

table

tbody要素が必須です。

<pre>
<table>
  <tbody>
    <tr>
      <td>...</td>
    </tr>
  </tbody>
</table>
</pre>

また、colタグを使用するときはcolgroupタグが必須です。

textareaとpre

改行から始めてはいけません。

<pre>require 'rubygems'
require 'nokogiri'
...</pre>

void要素

void要素(閉じタグを使わない要素)の一覧は以下の通りです。

  • area
  • base
  • br
  • col
  • command
  • embed
  • hr
  • img
  • input
  • keygen
  • link
  • meta
  • param
  • source

これらの要素は<br/>のように短縮形で書きます。
これら以外の要素は中身が空の時でも短縮形を使わず<p></p>と書きます。

文字参照

以下の場合はかならず文字参照を使います。

  • CDATAセクション外の&と<
  • 属性値の中で改行やタブ文字などを使うとき

文字参照で名前を使っていいのは以下のものだけです。

  • amp
  • lt
  • gt
  • apos
  • quot

それ以外のものは数値参照で表します。例えば

  • nbsp – &#xA0;
  • copy – &#xA9;
  • reg – &#xAE;
  • laquo – &#xAB;
  • raquo – &#xBB;
  • mdash – &#x2014;

完全な一覧はこの辺りを参照:
http://en.wikibooks.org/wiki/Unicode/Character_reference/0000-0FFF
http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references

その他のルール

  • noscriptタグは使えません
  • document.write()とdocument.writeln()は使えません。innerHTMLはOK
  • ページ内に<または&を含むjsやcssを書くときはCDATAセクションに入れます
    • < ![CDATA[ここにunsafeなコンテンツ]]>
  • xml:spaceとxml:base属性は使えません
  • id属性値にスペースを含めてはいけません
  • タグ名/要素名はすべて小文字です
  • 属性値は大文字/小文字を統一します(全部小文字にしておけばOK)。
  • 属性値はシングルクオートかダブルクオートで囲います

W3CにサンプルHTMLもありますので参考にどうぞ。

Categories: HowTo's, Tips and Tricks |Tagged , | Leave a comment

エクスプローラのサイドバーにある「ライブラリ」「ホームグループ」などの表示・非表示を簡単に切り替えられるアプリ

Windows 7のエクスプローラのサイドバー(ナビゲーションペイン)には「ライブラリ」「ホームグループ」「お気に入り」などが表示されてますが、邪魔です。これらの表示・非表示を簡単に切り替えられるアプリを見つけたので紹介します。

Windows 7 Navigation Pane Customizer
ダウンロードリンクが下の方にあって分かりにくいので一応:ダウンロード

起動するとこんな感じなので、要らないものはチェックを外します。ついでに名前も変えられるよう。

Apply Settingsを押すとエクスプローラが再起動され、変更が反映されます。

将来このアプリが消えてなくなると戻し方が分からなくなりそうなので、一応このプログラムは消さずに保存しておいたほうがよさそうですね。
# ライブラリ機能って使ってる人いるんかね…?

Categories: HowTo's, Tips and Tricks |Tagged | Leave a comment

Windows Live MeshにSorryと言われて繋がらない時

Windows Live Meshを起動してログインしようとすると Sorry, there is a problem with the windows live mesh serversと言われてしまう時の解決法。

  1. C:\windows\system32\drivers\etc\hostsをメモ帳で開きます(管理者として開かないとだめかも)
  2. 0.0.0.0 localhostという行があったら、先頭に#を入れてコメントアウト
  3. 保存

これで繋がるようになりました。なんじゃそりゃ。

http://windowslivehelp.com/thread.aspx?postid=c444b9da-b010-4ef4-ac97-d763d81ba630#c444b9da-b010-4ef4-ac97-d763d81ba630

Categories: HowTo's, Tips and Tricks |Tagged | Leave a comment

Note in Readerブックマークレットが動かない人へ

WebページをGoogle Reader/BuzzでシェアするNote in Readerブックマークレットが今日あたりからうまく動いてないようです。

ブックマークレットを以下で置き換えれば動くという情報があったので試したらちゃんと動きました。

javascript:_IS_MULTILOGIN_ENABLED=((typeof(_IS_MULTILOGIN_ENABLED)=="undefined")?false:_IS_MULTILOGIN_ENABLED);var%20b=document.body;var%20GR________bookmarklet_domain='http://www.google.com';if(b&&!document.xmlVersion){void(z=document.createElement('script'));void(z.src='http://www.google.com/reader/ui/link-bookmarklet.js');void(b.appendChild(z));}else{}

ただしGoogleの公式な修正ではなくユーザが勝手にやってみたハックらしいので、変なことになっても知らんよということです。ご注意を。

Note in Reader not working. Cleared cache, third-party cookies are on, still nothing. Help? – Google Reader Help.

Categories: HowTo's, Tips and Tricks |Tagged | Leave a comment

rm -rfをやめてTrashを使おう

rm -rfはもうしません。怖いです。代わりにTrashを使うことにしました。

TrashはCLIで使えるゴミ箱コマンドです。似たようなものは幾つかありますが、いろいろと普段から使いそうな機能をカバーしているので気に入りました。

特徴

  • rmのオプションをつけても文句を言わない
  • rmみたいに複数の対象ファイルを列挙して削除できる
  • ゴミ箱のファイル一覧を簡単に見られて復元もできる
  • 同じ名前のファイルやディレクトリを削除してもよしなにしてくれる
  • Gnomeのゴミ箱と互換性がある(らしい。試してない)
  • それでいてシェルスクリプトひとつ

入手

http://filerenameutils.sourceforge.net/の「Download」

インストール

展開するとfile-rename-utilsというフォルダができるので、Trashというファイルをパスの通ったディレクトリに置いて実行権限を与えます。

$ sudo cp file-rename-utils/Trash /usr/local/bin/trash
$ sudo chmod a+x /usr/local/bin/trash

あと、manページが一応付属してるので、たまには見るかもという人はしかるべき場所にコピーしておきましょう。Ubuntuの場合は

$ sudo cp file-rename-utils/man/Trash.1 /usr/share/man/man1

使い方

捨てる

$ trash rubygems-1.5.2.tgz

~/.Trashというディレクトリに入ります。あ、このディレクトリは予め作っておいてください。

ゴミ箱を覗く

$ trash
rubygems-1.5.2.tgz
-------------------
286KB       1 file(s)

戻す

$ trash -r rubygems-1.5.2.tgz

以前あった場所ではなくカレントディレクトリに戻ります。

ゴミ箱を空にする

$ trash -e

使い方を見る

$ trash --help
$ man trash

あとはtrash -r用にzshの補完関数を用意すれば完璧ですね。誰か作ってないかな。

Categories: HowTo's, Tips and Tricks |Tagged | 2 Comments