- 締切済み
HTMLの属性を自由に作ることはいいのか?
(X)HTMLの規則にそって書け、とよく言われますが、果たして100%従うことだけが善なのでしょうか? CSSが普及してから、完全に文書とデザインを分けて考えるようになり、進化系として、完全なXML(XHTML)的文書にして、検索エンジンなどにもわかりやすい文書構造に、ということで盲信しているイメージがあります。もしXMLであるならば、より効果的な属性の設定などもあっていいんじゃないかと思うのです。 たとえば、ページングのリンクなどで 1 2 3 4 5 とページへのリンクアンカーがあるとして、通常は <a href="?page=1">1</a> <a href="?page=2">2</a> のような形になるでしょうが、XML(DOM)としては <a href="?page=1" page="1">1</a> <a href="?page=2" page="2">2</a> というような 独自に page という属性にそのページナンバーを入れた方が取得しやすいと思うのですが、こういうのでもルール外だから悪、と言われてしまうのでしょうか? その文書をparseしても、そのページナンバーを取得するのにもうひと工夫が必要になってしまいます(hrefを正規表現するなどして)。それなら属性に書いた方が絶対楽だし、その値の意味を属性名としてわかりやすく定義できると思うのですが、どうなんでしょうか? 気になる点としては、今後新しく予約語としてその属性名が定義される可能性があり、その値の意味が異なり、ブラウザの挙動もおかしくなる可能性は理解できます。でも、それはプログラミングしてる人なら、バージョンアップでよく出てくることですし、とりわけHTMLだけやめておけ、というのもおかしいと思いますし。絶対かぶらないように、属性名を作ればいいだけですけどね。servicename_page="2" みたいな(笑)。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- askaaska
- ベストアンサー率35% (1455/4149)
> (X)HTMLの規則にそって書け、とよく言われますが、果たして100%従うことだけが善なのでしょうか? 善だの悪だのは大げさだけど ルールに従うことはとても大切なことよ。 (X)HTMLを扱うもの(ブラウザ以外もあるのでこの表現をさせていただくわね)が 沢山あるのだから 統一の規格が存在しないと困ったことになるわ。 もちろん閉じられた世界で その世界だけでのルールを設けるのは勝手だけど。 逆を言えばルールはその程度のもの。 別にHTMLだから、なんて物はないし どの世界にもあるものよ、ルールは。 あったほうが都合がいいからあるのがルール。 それを逸脱して何か合った場合 それを受け入れないものを責めるなんておろかなことをせず 自分のせいであることを受け止めることができるのなら 好きなように振舞えばいいわ。
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
> (X)HTMLの規則にそって書け、とよく言われますが、果たして100%従うことだけが善なのでしょうか? これはその人の考え方次第だと思います。 条件付きですが、私は文法違反でも良いと思います。 また、target="_blank"やwindow.open()などで「新しいウインドウを使って表示すること」や、フレームも、 その方が読みやすいと思うなら、使って良いと思います。 で、その条件ですが、文法違反(または、ブラウザ独自の文法に準じている場合)は、 ブラウザ依存により、表示が異なる可能性があると言うことです。 異なった表示になっても問題がないようにしておいたり、何らかの方法で同じように表示できるようにしてあるなら、大丈夫だと思います。 XHTMLの文法はXMLに準じているので、DOCTYPEを独自に拡張することで、自由に属性やタグを追加できます。 が、DOCTYPEを拡張するその書き方に対してブラウザが対応していないため(またはバグのため)、 文法は正しいのに、不正な描画となります。 (バージョンアップにより対応される(された)かもしれません) たとえば、<blink>や<marquee>、<ruby>などのように、いわゆるブラウザ独自実装と呼ばれるタグは、たとえXHTMLのDOCTYPEを拡張して、文法に完全準拠させたとしても、 期待通りに表示されません。 <ruby>はXHTML1.1では正式、<marquee>はXHTML-Basicで正式なタグですので、対応しているブラウザが増えてきました。 XHTML1.0のDOCTYPEで<ruby>を使用しても、タグを無視するのではなく、XHTML1.1の<ruby>と同じ表示になります。 無視しても正しい表示ですし、XHTML1.1のrubyと見なして表示するのもまた正しい表示です。 属性では、Dreamweaverなどで使われているSpryフレームワークのネームスペース、 Googleなどが採用している<a href="" rel="nofollow">のrel属性値などが有名な文法違反だと思います。 タグ属性は、ほとんどのブラウザが単純に無視すると思いますので、 独自の属性やネームスペース、属性値を作っても、問題になることはないと思います。
お礼
アドバイスありがとうございます。 そうですね。正しい正しくないではなく、自分でそれが一番良いと思えば採用すればいいですよね。 まだまだブラウザごとに動作が異なる部分も多いですし、準拠したからといって、どんな意味があるのさ、というのが現実になってしまってるかもしれません。 完全に準拠するならIE6などは切り捨てなければならなくなりますし。適材適所というか、状況にあった運用ですかね。
お礼
アドバイスありがとうございます。 おっしゃるとおり、ルールがないとめちゃくちゃになりますので、もちろんそれは大切なのは理解しております。ただ個人的な意見ですが、HTMLの場合、とても「こうあるべき主義」の人も多いですし、めんどくさい業界だとも感じてます。 もうすこし柔軟性のあるルールにしてくれるといいんですけどね。プログラミングだと、基本的に予約語以外ならどんな言葉を使ってもいいですし。HTMLでも同様なんだろうと思いますが、きっとルールの問題ではなく、ルール外のことをすると批判するという「人」のほうに問題があるのかもしれませんね。 今回質問させてもらったのは、これまたプログラム、Javascriptで値を管理しやすいから、というのでさせてもらいました。 Jqueryで $('#pagelink').attr("page"); こんなかんじでページナンバーが取得でき楽なんですよね。その後Ajaxでページを取得したり。