Tags : web

このTagsの登録数:44件 表示 : 1 - 10 / 44

2008-02-13

XML 10 周年

ポスト @ 16:26:03 | web

W3C Q&A Weblog 経由。XML 生誕 10周年とのこと。

XML 10th anniversary

お祝い状も送れるようです。

2008-01-23

HTML 5 の FPWD でたよ

ポスト @ 22:10:18 | web

HTML 5 の FPWD が出ましたね。

そうそう、HTML 5 では UTF-7 使えなく、なりそう。

Authors should not use JIS_X0212-1990, x-JIS0208, and encodings based on EBCDIC. Authors should not use UTF-32. Authors must not use the CESU-8, UTF-7, BOCU-1 and SCSU encodings. [CESU8] [UTF7] [BOCU1] [SCSU]

あと、JavaScript-er は

document.implementation.hasFeature("HTML", "5.0"); // => true/false

で HTML 5 の DOM API が使えるかどうか確かめられるように、なりそう。

A DOM application can use the hasFeature(feature, version) method of the DOMImplementation interface with parameter values "HTML" and "5.0" (respectively) to determine whether or not this module is supported by the implementation.

Firefox trunk も document.implementation.hasFeature("HTML", "5.0")false

hasFeature()hasFuture() と typo するなんて真似は止してね。

2007-10-13

role 属性値を基にノードを選択する

ポスト @ 0:37:21 | web

XHTML Role 属性モジュールの最終草案が出ました (XHTML Modularization 向け) 。早速日本語訳も公開されています。まだ草案段階なので、気が早い気がしますが、ここでは role 属性を使ってノードを絞りこむことを考えてみます。

role 属性になると何がうれしいの?

class 属性は同じ値だからといって本当に同じ意味を持つのか確証がもてませんでしたが、 role 属性値は一意に定まります。

例えば role="main" なら文書のメインコンテンツ、role="wairole:slider" なら GUI 部品のスライダであること確実にわかります (名前空間 http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy# の接頭辞が wairole の場合)。

role 属性値

role 属性の値は以下のように述べられています。

The role attribute takes as its value one or more whitespace separated CURIEs. Any non-qualified value MUST be interpreted in the XHTML namespace, and MUST be taken from the list defined in this section.

CURIE については 3.1.1 で述べらています。基本的に以下の構文になります。

prefix:reference

prefixreference を連結すると必ず IRI にならなくてはなりません。なので得られた IRI によって属性の持つ意味を識別できるというわけです。prefix は XML 名前空間の接頭辞を指定します。prefix が省略されている可能性や prefix とコロンが省略されている可能性もあるとのことです。

特に prefix は任意で良いわけですから、単純に属性値で絞りこむのは危険ではないかと思います。例えば以下のような XHTML 断片を考えてみます。

<div xmlns:foo="http://www.w3.org/1999/xhtml/vocab#
     xmlns:ex="http://example.com/#">
<p role="contentinfo">...</p>
<p role=":contentinfo">...</p>
<p role="foo:contentinfo">...</p>
<p role="bar:contentinfo"
   xmlns:bar="http://www.w3.org/1999/xhtml/vocab#">...</p>
</div>

この場合 p 要素は全て同じ http://www.w3.org/1999/xhtml/vocab#contentinfo を意味しています。

prefix が省略された場合はhttp://www.w3.org/1999/xhtml/vocab# として処理されます。

role 属性を使った絞りこみ

このようにややこしいわけですが、prefix に紐付ける名前空間 URI と reference が与えられていた場合は以下のように考えられます。

  1. role 属性値リストに :reference を含む(後方一致) するノードを XPath で取ってくる。XPath 式は以下の感じ。
    //*[contains(concat(" ", @role, " "), ":reference ")]
  2. ノードの role 属性から prefix を取り出す
  3. prefix から求めた名前空間 URI が、与えられていた名前空間 URI と同じならそのノードを返す

この他にも接頭辞や接頭辞とコロンが省略された場合の処理も必要です...。適当に書いてみたのが以下のコードです。

function getElementsByRole(aURI, aReference, aContext) {
    if (!aReference) return null;
    if (!aContext) aContext = document;
    var isDefaultPrefix = false;
    var defaultNS = "http://www.w3.org/1999/xhtml/vocab#";
    if (!aURI || aURI == defaultNS) {
        aURI = defaultNS;
        isDefaultPrefix = true;
    }
    if (isDefaultPrefix)
        var xpath = "//*[contains(concat(\" \", @role, \" \"), \":" + aReference + " \") or contains(concat(\" \", @role, \" \"), \" " + aReference + " \")]";
    else
        var xpath = "//*[contains(concat(\" \", @role, \" \"), \":" + aReference + " \")]";
    var resolver = function (aPrefix) {
        var o = document.createNSResolver(aContext)(aPrefix);
        return o | "http://www.w3.org/1999/xhtml";
    }
    var exp = document.createExpression(xpath, resolver);
    var result = exp.evaluate(aContext, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null);
    var ret = [];
    var simpleRe = new RegExp("\\s\\:?" + aReference + "\\s");
    var prefixRe = new RegExp("\\s(.+?)\\:" + aReference + "\\s");
    var item, role, prefix;
    for (var i = 0, len = result.snapshotLength; i < len ; i++) {
        item = result.snapshotItem(i);
        role = " " + item.getAttribute("role") + " ";
        if (isDefaultPrefix && simpleRe.test(role)) {
            ret.push(item);
            continue;
        }
        // check whether the prefix is for aURI
        prefix = prefixRe.exec(role);
        if (prefix && item.lookupNamespaceURI(prefix[1]) == aURI)
            ret.push(item);
    }
    return result.snapshotLength == 0 ? null : ret;
}

以下のサイトを参考にしましたというか、パクりました。

これを以下の XHTML 文書で使うことを考えてみます。

<?xml version="1.0"?>
<html xmlns="http://www.w3.org/1999/xhtml"
      xmlns:aaa="http://www.w3.org/2005/07/aaa">
  <head>
    <title>...</title>
  </head>
  <body>
    <h1>...</h1>
    <div role="main">
      ...
      <p role="wairole:range" aaa:valuemax="100" aaa:valuemin="0">
        <span role="wairole:slider"><!-- JavaScript と CSS でスライダっぽくする -->...</span>
      </p>
      ...
    </div>
  </body>
</html>

文書のメインコンテンツの中にあるスライダ部品をとってくるには以下のようにします。

var WAIROLENS = "http://www.w3.org/2005/01/wai-rdf/GUIRoleTaxonomy#";
var slider = getElementsByRole(WAIROLENS, "slider", getElementsByRole("", "main")[0])[0];

2007-09-02

Operator 0.8 に span@title のサポートを追加する

ポスト @ 17:48:10 , 修正 @ 2007-09-02 23:01:09 | firefox, microformats, mozilla, web

木達さんのブラウザだらけの討論大会の告知を読んでいたところ以下の文が目にとまりました。

以下、開催概要です(microformatshCalendarを使って記述しているので、Operatorのような処理系を利用している方には情報を取り出すのに便利かもしれません)。

そこで早速 Firefox 2 に Operator 0.8 をインストールして試してみました。が、残念ながら Operator は hCalendar を見つけてくれませんでした (Frown)

そこで、Operator のソース (Microformats.js)を見たところ、title 属性を拾っているのは abbr 要素だけという悲しい事実がわかりました。木達さんの記事では abbr 要素ではなく sapn 要素を使っているので hCalendar を検出できていませんでした。

ということで、プロファイルディレクトリの /extensions/{95C9A302-8557-4052-91B7-2BB6BA33C885}/chrome/operator.jar の中の content/Microformats/Microformats.js の該当部分を書き換えます。書き換え前のコードは以下の通り

    defaultGetter: function(propnode, parentnode, datatype) {
      if (((((propnode.localName.toLowerCase() == "abbr") || (propnode.localName.toLowerCase() == "html:abbr")) && !propnode.namespaceURI) || 
         ((propnode.localName.toLowerCase() == "abbr") && (propnode.namespaceURI == "http://www.w3.org/1999/xhtml"))) && (propnode.getAttribute("title"))) {
        return propnode.getAttribute("title");
      } else if ...

書き換え後のコードは以下のとおり。

    defaultGetter: function(propnode, parentnode, datatype) {
      if (((((propnode.localName.toLowerCase() == "abbr" ||
              propnode.localName.toLowerCase() == "span") ||
             (propnode.localName.toLowerCase() == "html:abbr" ||
              propnode.localName.toLowerCase() == "html:span")) &&
            !propnode.namespaceURI) || 
           ((propnode.localName.toLowerCase() == "abbr" ||
             propnode.localName.toLowerCase() == "span") &&
            (propnode.namespaceURI == "http://www.w3.org/1999/xhtml"))) &&
          (propnode.getAttribute("title"))) {
        return propnode.getAttribute("title");
      } else if ...

これで木達さんの記事でも hCalendar を検出できるようになりました (Smile)

Operator08SpanElementSupport.thumbnail.png

とはいえ、弊害もあるかもしれませんのでご注意ください。

あるいは、処理する要素の要素型名に関係なく title 属性を持っていたら title 属性の内容を優先する方がより良いのかもしれません。

追記: Bugzilla@MozillaBug 394626 として報告したところ、Operator 開発者の Michael Kaply さんのコメントがつきました。内容は以下の通りです。

あなたのパッチに感謝します。

人々がこの変更を提案してきましたが、microformats コミュニティは、これが dtstart/dtend のアクセシビリティへの正しい解決策であるとは同意していません。

現在のところ、まだ abbr は title (属性) を読むべき唯一のタグです。

さらなる議論に関しては、microformats メーリングリストを参照してください。

ということで、今すぐ Operator が対応するということはなさそうです (Frown)

microformats のメーリングリストでは 8 月に [uf-discuss] Simple solution to abbr-D-P accessibility concerns: 'Title Trigger' から始まる熱い議論があったみたいですね。

あるいは HTML 5 の time 要素に期待?

2007-08-22

未解決の問題を調べる

ポスト @ 12:47:23 | html5, web, whatwg

The WHATWG BlogSeeing the open issues の翻訳です。

未解決の問題を調べる

イアンヒクソン (Ian Hickson) は WHATWG と public-html メーリングリストで、彼が書いた未解決の問題リストを公開するツールアナウンスしました:

最近これらのメーリングリストとブログ投稿に述べられた透明性不足の懸念に応えて、私は自分がリストしている問題を公開するツールを書きました:

http://www.whatwg.org/issues/

あなたは優先されるべき問題に投票もできます (そうするには最終的にそのリストにメールを送る必要があるでしょう。この方法は でたらめなスパマがこの Web アプリを使おうとするのを防ぐ方法として使います)。

現時点で最も投票された 20 の問題を表示するページもあります:

http://www.whatwg.org/issues/top

そのページは私が次に作業するだろうことについての注記を含んでいます。とはいえこの情報は必ずしも正確ではありません。

上記に加えて、以下の方法の 1 つを使っても仕様の全変更の通知を得ることができます:

この twitter フィードを follow することもできます (これは携帯電話でも購読することができるので、あなたは全チェックインのテキストメッセージを受け取る事ができます):

http://twitter.com/WHATWG

このメーリングリストを購読できます:

http://lists.whatwg.org/listinfo.cgi/commit-watchers-whatwg.org

最近の仕様の変更はここで閲覧できます:

http://html5.org/tools/web-apps-tracker

変更とアナウンス投稿を要約するボランティアになりたいなら、ただただ そうするだけです。許可や許しを求めたりしないでください! 私は HTML ワーキンググループのブログに投稿する手順について確かではありませんが、WHATWG ブログはサインアップしてブログ記事を書くだけで投稿できます (ラックラン (Lachlan) が実際に投稿するので、後で彼に問い合わせてください。スパマがブログを悪用したので我々は特定のユーザを制限しています)。whatwg.org のフォームを使って WHATWG twitter フィードにアナウンスを投稿することもできます。

Cheers,

著作権情報

The WHATWG Blog は MIT ライセンスで提供されています (著作権情報)。

Copyright © 2006 The WHATWG Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2007-08-18

Java による HTML 5 パーシングアルゴリズムの実装

ポスト @ 11:55:17 | html5, web, whatwg

The WHATWG BlogImplementation of the HTML5 parsing algorithm in Java の翻訳です。

Java による HTML5 パーシングアルゴリズムの実装

今や Java 5 による HTML5 パーシングアルゴリズムのオープンソース実装が存在します。The Validator.nu HTML Parser です。XHTML 1.x コンテンツを読み込むために SAX または DOM、XOM API を使っているアプリケーションの XML パーサの暫定的な置き換えとして そのパーサを使うことができます。

訳者による蛇足

The Validator.nu HTML Parser の開発には Mozilla Foundation が資金提供したとのこと。

Sample Apps に載っている例を試して見たところ、ひどい (X)HTML でもそれなりにパースしてくれる (HTML5 パーシングに基づいているように感じられます。とはいえ Java に関しては門外漢なので誤解しているだけかもしれません。

著作権情報

The WHATWG Blog は MIT ライセンスで提供されています (著作権情報)。

Copyright © 2006 The WHATWG Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2007-08-15

(X)HTML 5 には実際に利用できる唯一のルビマークアップ実装があるでしょう

ポスト @ 22:33:48 , 修正 @ 2007-08-16 2:19:15 | web

The WHATWG Blog(X)HTML 5 will have the only usable implementation of ruby markup の翻訳です。

(X)HTML 5 には実際に利用できる唯一のルビマークアップ実装があるでしょう

(X)HTML 5 の取組に関する誤解の 1 つは HTML 4 あるいは XHTML 1.0 と比べて重要な利益が一つもないというものです。 ここに、これが間違っていると立証するものが 1 つあります。(X)HTML 5 には、実際に利用できる唯一のルビマークアップ実装があるでしょう。これは欧米ではそれほど大きな違いにはならないでしょうが、アジアの二十億の人々 (訳注:原文は a pair of billion people) と数千人の神学者と歴史家には確実に朗報です。

HTML 5 仕様のエディタ、イアン・ヒクソン (Ian Hixison) は最近、WHAT WG メーリングリストでこう発言しました: 「<ruby> のパーシングとセマンティック要件がどうあらねばならないのか、既に実際に調査を始めています。来週それは仕様に加えられるはずです。」 大雑把に言って、現在ネイティブにルビをサポートしている唯一のブラウザは Internet Explorer です。これはマイクロソフトにとってすばらしいニュースであるはずです。Gecko ベースのブラウザ、Opera、Konqueror あるいは Safari に比べ、HTML5 仕様のサポートで、一度だけでも彼らは実際にに先を行くでしょう。

モリー (Molly) のブログの最近のコメントで、キース・ボウ (Keith Bowes) は述べます:

個人的に、私は HTML 5 の要点がわかりません。HTML 4 は HTML 3.2 の大きな改良でした: より良い国際化、スタイルシートのより良いサポート、より多くの構造、より少ないプレゼンテーション、より疑わしいもののいくつかは削除されるか、事実上廃棄のごみ箱に押し込まれました。しかし、HTML 5 が本当に十分よりよいか、私には定かではありません。

二十億の中国語あるいは日本語話者と、数千の神学者は違うでしょう。ルビは彼らにとって大きな改良です。しかし待ってください、私には聞こえるでしょう。ルビは新しくありません。何年もの間 XHTML 1.1 の一部でした。私の反論はこうです: それはまさに私の要点です! つまり XHTML 1.1 は役立たずです! 仕様が言っていることをここに示すと: コンテントは XML MIME タイプで提供されなくてはならない。しかし、私たちは全員、巨大なシェアを持つ特定のブラウザ が本当の XHTML をサポートしていないことを知っています! (訳注: Internet Explorer が application/xhtml+xml 等をサポートしていないことを言っている)

ルビマークアップを使いたいと思うなら、私は (a) text/html として XHTML 1.1 を提供することができます。全てのルールに歯向かい全ての IE ユーザに利益をもたらして。あるいは (b) Gecko ベースのブラウザが役立つように提供することが出来ます。Gecko ベースのブラウザは拡張を通して、あるいは CSS を実際に理解している全てのブラウザ向けに、 ひたむきな CSS 規則を使用することで、ルビをサポートできます。しかし私にはどちらもできません。

(X)HTML 5 には 2つのシリアライズ方法がある (訳注:HTML 文書と XHTML 文書) のでこの問題は消滅するでしょう。 私はルビマークアップを使いながら text/html として自分のコンテントを送っているかもしれません。

しかし、これから学ばれた教訓がもう一つあります。私はアクセシビリティの強い支持者 (結局私は第一に神学者であり、第二に Web 開発者 です) ですが、私の友人の中にはアクセシビリティ機能がまだ仕様で文書化されていなかったため HTML 5 を疑ってきました。質問してください! 私はルビのためにそうしました。あまり積極的でない返事を得たなら、私のケースについて強く論争したでしょう。しかし、しばらく否定的な判断は保留してください。作業はまだ終わっていません。戦争は無くなっていません。

最後に、神学者にとってルビはどの程度有益でしょうか? 私が幻を見るように、(私たちが絶えず格闘する種類の) 古代文書の行間に注のある複製を作る最も良い方法は、マークアップの中で古代の単語と翻訳された言葉との関係が最も明確になるルビマークアップを使用することです。

著作権情報

The WHATWG Blog は MIT ライセンスで提供されています (著作権情報)。

Copyright © 2006 The WHATWG Contributors

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

2007-06-03

XHTML+CSS (r)evolution, 3rd について

ポスト @ 19:00:21 | web

先日 XHTML+CSS (r)evolution, 3rd に行ってきました。既に Kuruma さんが 内容の要約内容は信じるに値しないという記事を書かれています。

この記事ではポイントを絞って私なりの感想/考えを述べます。と言いたいところですが、発表や Kuruma さんの記事の補足にしかなっていません。

著作権情報に関して

HTML 5 の著作権情報について、益子さんのスライドでは

新たに追加された著作権情報

となっており、最近になって急に追加されたように取れます。また発表でも、これまではなかったが、この前見たらあったという旨を述べています。

まず、現在の HTML5 草案 (2007年6月2日版) ではどうなっているのかというと、以下の通りです

脱線しますが、御存じの通り Apple は社名を Apple Computer, Inc. から Apple Inc. に変更しました。WebKit のソースコードでは一部で Apple, Inc. に名称変更しています (例えば リビジョン 21174) が、HTML 5 は Apple Computer, Inc. のままです。

さて、1 年以上前の 2006年1月1日のアーカイブ (当時は Web Applications 1.0 という名称でした) では

さらに、Ian Hickson さん (以下 Hixie) が Opera に居たころの 2005年9月1日のアーカイブでも、以下のようになっています。

2004, 2005 だったものが 2004-2007 に変更されている以外の変更は見られません。Web Applications 1.0/HTML 5 の著作権情報は新たに追加されたわけではない、と言えると思います。

いつ Web Applications 1.0 から HTML5 に名称変更されたのか

Kuruma さんの XHTML+CSS (r)evolution, 3rdの内容は信ずるに値するか? では、いつ Web Applications 1.0 から HTML 5 に名称変更されたかについて、

なお、表題の記録は5月10日0時56分のRevision 799からヘッダが別ファイルに分離されたのを最後にトラッキングすることができなかった。しかしこのRevision 799はIanのメールが投げられる後の更新である。そして、この更新時にはまだWeb Applications 1.0と呼ばれていたようだ。

としていますが、Web Applications 1.0/HTML5 は Subversion で管理されているので Subversion クライアントを使えば変更記録が簡単にわかります。

Web Applications 1.0/HTML 5 が Subversion で管理されるようになったのは 2006年3月3日からです。

調べてみたところ リビジョン 800 (2007年5月10日11時06分) であることがわかりました。もちろんコミットしたのは Hixie です。diff は以下のとおり。

Index: header-whatwg
===================================================================
--- header-whatwg       (リビジョン 799)
+++ header-whatwg       (リビジョン 800)
@@ -1,7 +1,7 @@
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <html lang="en-GB-hixie">
  <head>
-  <title>Web Applications 1.0</title>
+  <title>HTML 5</title>
   <link rel="stylesheet" type="text/css" href="/style/specification">
   <link rel="icon" href="/images/icon">
   <style type="text/css">
@@ -17,7 +17,7 @@
 
   <div class="head">
    <p><a rel="home" href="http://www.whatwg.org/" class="logo"><img alt="WHATWG" src="/images/logo"></a></p>
-   <h1>Web Applications 1.0</h1>
+   <h1>HTML 5</h1>
    <h2 class="no-num no-toc">Working Draft — [DATE: 01 Jan 1901]</h2>
    <p>You can take part in this work. <a href="http://www.whatwg.org/mailing-list">Join the working group's discussion list.</a></p>
    <p><strong>Web designers!</strong> We have a <a href="http://blog.whatwg.org/faq/">FAQ</a>, a <a href="http://forums.whatwg.org/">forum</a>, and a <a href="http://www.whatwg.org/mailing-list#help">help mailing list</a> for you!</p>
@@ -67,6 +67,10 @@
   href="/mailing-list">WHATWG mailing list</a> and take part in the
   discussions.</p>
 
+  <p>This specification is also being produced by the <a
+  href="http://www.w3.org/html/wg">W3C HTML WG</a>. The two
+  specifications are identical from the table of contents onwards.</p>
+
   <p>This specification is intended to replace (be the new version of)
   what was previously the HTML4, XHTML 1.x, and DOM2 HTML
   specifications.</p>

canvas要素

HTML 5 の canvas要素に関してですが、益子さんのプレゼンでは

で、canvas ってのは Firefox 1.5 とか Safari が実は実装しているという、ま先取り実装ですかね、先行実装していると。

と述べています (音声データ (mp3) より書き起こし)。しかし canvas は当初 Apple が独自に実装しました。そしてその後 Web Applications 1.0 仕様に取り込まれました。

2004年7月5日に WebKit の開発者の 1人 David Hyatt が Introducing the Canvas

Another extension we made to HTML is a new element called the canvas. This element is essentially an image element that supports programmatic drawing.

として発表しました。それ以前にも彼の blog では <input type="search"> (HTML 4.01 には type 属性では search という値はとれません) が出ていました。これらは Dashboard 用ということでした。

詳細な経緯は省きますが、Hixie も Extending HTML (2004年7月12日) で以下の様に述べています。

Here is Apple introducing their own proprietary markup to the Web, without going through any sort of standardisation first (not even unofficial standardisation like the WHATWG), and what people complain about is the syntax?

同日 David Hyatt も。

We are willing to discuss these elements in an open forum like the WHAT-WG.

と述べています。

その後 2004年8月16日の WHATWG のメーリングリスト上で Hixie は

I drafted up an initial version of the <canvas> spec:

と書いています。このように canvas 要素は Apple の独自実装を WHATWG の Web Applications 1.0 に取り込んだ、と言えると思います。

今でも HTML 5 の謝辞には以下のようにあります。

Special thanks to Richard Williamson for creating the first implementation of canvas in Safari, from which the canvas feature was designed.

Web Forms 2.0

HTML 5 ではフォームの部分は

This section will be a rewrite of the HTML4 Forms and Web Forms 2.0 specifications, with hopefully no normative changes.

とされています。Web Forms 2.0 は WHATWG のフォームの規格ですが、W3C においても 草案としても公開されています。ただし HTML 5 での言及は WHATWG のものです

2007-03-04

ホップ本買ったよ !

ポスト @ 19:24:47 | web

巷で話題の ホップ本 をようやく入手しました。とはいえ、まだ中身はあまり読めていません。

実践と付いているだけあって現状を踏まえた内容や、かなり長めの例があります。既にある程度 (X)HTML や CSS への理解がある人向けの内容だと感じました。

大きさ

本の量についてわかりやわすくするために、他の本と一緒に写真を取りました。

ホップ本と SVG Essentials、Firefox Hacks 等を並べてみたところ

内容の厚さとページ数が比例するとは限りませんが、この本に関しては言えると思います (まだ読み途中ですが)。

写っている本でページ数が少なめなのは、比例していない例ですからね (Smile)。ちなみに、SVG Essentials は 364ページだそうです。Firefox Hacks (468ページ) はいつもカバーをかけています。

気になったところ

まだ読んでいる途中なのにあれこれ言って良いのかと思わなくもないですが、一応気になった点。

XML 1.1

2 章 3 節で XML 1.1 について触れていますが、XHTML で XML 1.1 を使う必要性はほぼ無いことがより強く書かれていると分かり易いかな思います。現在の文だと XML 1.0 と XML 1.1 は選択肢として同じ程度の重さを持っているのかなと取れなくもないです。特別な改行コードなど XML 1.1 で追加された機能を使わないのであれば、XML 1.0 を使うべきです。また、XML 1.1 に対応していないパーサは現在でも使われています。例えば Gecko 系ブラウザも使っている Expat は対応していません。

「プレスリリースの部分だけ赤い線で枠囲いしたい」

2 章 3 節の P.52 のコラムですが、

(略)
<body>
  <h1>(略)</h1>
    <div class="section">
      <h2>プレスリリース</h2>
        <div class="section" id="pr-20070109">
          <h3>2007-01-09 - 業務再開のお知らせ</h3>
          <p>(略)</p>
        </div>
        (略)
    </div>
    <dl>
      (略)
    </dl>
</body>
(略)

「プレスリリースの部分だけ赤い線で枠囲いしたい」なら、

body > div.section { border : 1px solid #00f; }

ではなくプレスリリース用の class を作った方が良いかなと思います。管理もその方が楽だと思いますし。

2006-12-21

WebKit がフィルとストロークを設定するプロパティを実装

ポスト @ 18:05:57 | webkit, web

WebKit がテキストのフィル(塗り)とストローク(輪郭)を指定する独自の CSS プロパティを実装したようです。 手元に確認を取れる環境がないのでチェックインのログ等からの推測ですが

-webkit-text-fill-color
フィルの色を指定。
-webkit-text-stroke-color
ストロークの色を指定。
-webkit-text-stroke-width
ストロークの幅を指定。border-top-width 等と同じ値をとれるようです。
-webkit-text-stoke
-webkit-text-stoke-color, -webkit-text-storke-width の短縮形

手元に確認を取れる環境がないのですが、いまのところ Mac OS X でのみ実際に効果があるようです。

文字が小さくなると、ストロークがあった場合つぶれて読めなくなってしまうのではないかと思います。 WebKit の拡大/縮小がどうなっている(どうなる)のかわかりません。しかし、縮小したときに、ストロークの幅も小さくならないと文字が潰れてしまいます。

SVG での例

まったくの蛇足、いらんお節介ですが、自己満足のために、縮小で予想される問題の例を SVG で作ってみました。

SVG では他の図形と同様にテキストにフィルやストロークを設定できます。