• 締切済み

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" みたいな(笑)。

  • SHlVA
  • お礼率92% (60/65)
  • HTML
  • 回答数2
  • ありがとう数3

みんなの回答

  • askaaska
  • ベストアンサー率35% (1455/4149)
回答No.2

> (X)HTMLの規則にそって書け、とよく言われますが、果たして100%従うことだけが善なのでしょうか? 善だの悪だのは大げさだけど ルールに従うことはとても大切なことよ。 (X)HTMLを扱うもの(ブラウザ以外もあるのでこの表現をさせていただくわね)が 沢山あるのだから 統一の規格が存在しないと困ったことになるわ。 もちろん閉じられた世界で その世界だけでのルールを設けるのは勝手だけど。 逆を言えばルールはその程度のもの。 別にHTMLだから、なんて物はないし どの世界にもあるものよ、ルールは。 あったほうが都合がいいからあるのがルール。 それを逸脱して何か合った場合 それを受け入れないものを責めるなんておろかなことをせず 自分のせいであることを受け止めることができるのなら 好きなように振舞えばいいわ。

SHlVA
質問者

お礼

アドバイスありがとうございます。 おっしゃるとおり、ルールがないとめちゃくちゃになりますので、もちろんそれは大切なのは理解しております。ただ個人的な意見ですが、HTMLの場合、とても「こうあるべき主義」の人も多いですし、めんどくさい業界だとも感じてます。 もうすこし柔軟性のあるルールにしてくれるといいんですけどね。プログラミングだと、基本的に予約語以外ならどんな言葉を使ってもいいですし。HTMLでも同様なんだろうと思いますが、きっとルールの問題ではなく、ルール外のことをすると批判するという「人」のほうに問題があるのかもしれませんね。 今回質問させてもらったのは、これまたプログラム、Javascriptで値を管理しやすいから、というのでさせてもらいました。 Jqueryで $('#pagelink').attr("page"); こんなかんじでページナンバーが取得でき楽なんですよね。その後Ajaxでページを取得したり。

回答No.1

> (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属性値などが有名な文法違反だと思います。 タグ属性は、ほとんどのブラウザが単純に無視すると思いますので、 独自の属性やネームスペース、属性値を作っても、問題になることはないと思います。

SHlVA
質問者

お礼

アドバイスありがとうございます。 そうですね。正しい正しくないではなく、自分でそれが一番良いと思えば採用すればいいですよね。 まだまだブラウザごとに動作が異なる部分も多いですし、準拠したからといって、どんな意味があるのさ、というのが現実になってしまってるかもしれません。 完全に準拠するならIE6などは切り捨てなければならなくなりますし。適材適所というか、状況にあった運用ですかね。

関連するQ&A

  • rel属性とhref属性とtitle属性を組み合わせてリンクをつくる

    rel属性とhref属性とtitle属性を組み合わせてリンクをつくる お世話になっております。 HTML初心者です。 自作HPを作成しており、よくわからないことが出てきたので質問させてください。 見出しに "前に戻る","次に進む","HOME"などのリンクをつけたいと思っています。 アンカータグに、href属性を組み合わせて、使用すればできることはわかったのですが、 rel属性とhref属性とtitle属性を組み合わせて作ろうと思っています。しかし、 うまくいきません。 たとえば、headerタグ内に、 <link rel="next" href=".PAGE2.html" title="PAGE2について" /> というようなコーディングを行ったのですが、まったくうまくいきません。 ページ1において、”PAGE2について”という文字が出てきてそこをクリックするとページ2にとべる・・ というような仕組みを考えているのですが・・・ rel属性に関しての理解が不十分なためとは思うのですが、ご存知の方が いらっしゃたらご教授願います。 よろしくお願いします。

    • ベストアンサー
    • HTML
  • HTMLの属性について

    【Another HTML-lint gateway】 URL:http://openlab.ring.gr.jp/k16/htmllint/htmllint.html で、自サイト(HTMLの文法)をチェックしたのですが、 ■<HTML> に他のHTML用の属性 `XMLNS` が指定されています。 ■<A> の属性 `TARGET` はあまり薦められない属性です。 など2つの警告を受けました。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html xmlns="http://www.w3.org/1999/xhtml" lang="ja"> ↑の表記が間違っているのでしょうか? また、リンクを貼る時は、<A>タグ内にtarget="_self"を入れているのですが、これは入れない方が良いのでしょうか? よければご指南ください。 よろしくお願いいたします。

    • ベストアンサー
    • HTML
  • HTML何ヵ所かからPDFにリンクさせるには?

    HTML何ヵ所かからPDFにリンクさせるには? HTMLファイルからPDFにリンクさせるには、Adobe Acrobat 7.0 の場合、 PDF Open Parameters(http://partners.adobe.com/public/developer/en/acrobat/PDFOpenParameters.pdf ) で紹介があり、 例えば <A href="***.pdf#page=2&view=FitH,top">第1のリンク先へ</A> でAdobe Acrobat 7.0 で作成したPDFファイル(***.pdf)のページ2のトップにリンクできることは確認しました。 ところが同じHTMLファイル何ヵ所かから、同じPDFファイル(***.pdf)の異なるページにリンクさせることができません。 例えば、 <A href="***.pdf#page=5&view=FitH,top">第2のリンク先へ</A> <A href="***.pdf#page=8&view=FitH,top">第3のリンク先へ</A> として、他の2ヵ所から、其々ページ5とページ8 へジャンプさせようとしましたが、全てページ2にジャンプしてしまいます。 HTMLファイル複数箇所から同一のPDF何ヵ所かへリンクさせるにことはできるのでしょうか? また、その方法を教えてください。 更に、Adobe Acrobat 7.0 の他で作成したPDFファイルへリンクさせる場合も同様にできるのでしょうか? よろしくお願いします。

  • HTMLの属性値の省略について

    HTML4の仕様では、「checked」属性には「checked」という値を設定する(しなければならない)と取れる記述があります。しかし実際には、省略して記述しているページをよく見かけますし、また省略しても正しく解釈されるブラウザがほとんどです。これがHTMLの仕様なのか各ブラウザ独自の慣習なのかよく分かりません。 HTML 4 Document Type Definition http://www.asahi-net.or.jp/~sd5a-ucd/rec-html401j/sgml/dtd.html ※言うまでも無いことかもしれませんが「checked」属性以外にも「disabled」「readonly」などいくつかあります。 また、XHTMLでは(当然)省略不可となっていましたが、HTML5ではどうなっているのかよく分かりません。 このあたりのことについて教えてください。 質問は以下です ・HTML4では属性値の省略について仕様として省略可と明記しているのでしょうか。それともなんとなく慣習でそうなってしまったのでしょうか? ・もしもHTML4の仕様として省略可とされているのならば、仕様書上の記述個所を教えてください。 ・HTML5ではどうなっているのでしょうか?まだ策定中とはいえ、さすがにこのレベルのことは議論が済んでいるように思います。省略可なのか不可なのか、仕様書上のどこかに記述されているのかまだ決まっていないのか、この点を教えてください。 ・HTML5のDTDがあればそれを教えてください 以上、よろしくお願いします。

    • ベストアンサー
    • HTML
  • HTMLとCSSでのClass属性がわかりません

    画像を挿入し、リンクを埋め込むと、画像の周りに線がついてしまう。 これを避けたいのですが・・・・ 具体的に言いますと・・・各ページに「TOPページ」へ戻るボタンを埋め込みます 各ページのHTMLに <div class="icon"> <a href="リンク先"><img src="パス名"></a> </div> CSSに img.icon{ border-style: none; } と記述しましたが、各ページの画像(「TOPページ」へ戻るボタン)の周りは線がついたままです HTMLの<img src="パス名" border="0">を記述すれば、線を消すことは出来ますが 複数ページに渡っているため、全てにborder=”0”を入力するのは 手間がかかってしまいます なんとかCSSでコントロールしたいのですが・・・ そもそも記述(文法)が間違っているのでしょうか? Classのとらえ方が間違っているのでしょうか? 画像も一気に変えたい場合の事も想定し、 現在HTMLで画像挿入しているのを、CSSで埋め込む記述方法があれば 教えてください。 数日前から、HTMLとCSSの勉強をはじめた初心者ですので 見当違いな質問かもしれませんが どうぞ、よろしくお願いします

    • ベストアンサー
    • CSS
  • HTMLリンクからPDFのしおりへリンク指定する方法

    HTML<a href=\"~リンク\">からPDFのしおりへのリンク指定方法についてご存知の方がいらしたら教えていただけませんか? PDF内の任意のページ(n)へのアンカー指定方法は「***.pdf#page=n」というところまでは分かりましたが、できればPDFの「しおり」を利用した、あるページの中のあるテキストへHTMLのアンカーリンクの様に飛ぶことができればと考えています。 条件としては、ユーザーがクリックするリンクはHTMLのa hrefです。 宜しくお願いいたします。

    • ベストアンサー
    • HTML
  • 同じid属性を何回も使ってはいけないの?

    「Another HTML-lint gateway」(個人のサイトっぽいのでリンクは貼りません)というHTMLの文法チェックサイトで、<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN">として文書をチェックしたところ、id属性が重複して使用されているのが良くないという結果が出ました。 具体的にはHEAD内にstyle定義として、仮に「#td1 td{ スタイルの内容 } 」という属性を書き、その属性を反映させたいテーブルに「id="td1"」を付けました。全く同じ処理をしたいテーブルがたくさんあるのでそれらにも全て「id="td1"」を付けたところ、上記チェックでダメだしを食らったというわけです。 id属性は、同じように処理したい箇所を、ひとつ定義を作ることによって全て同じように処理を適用するものだと思ってるんですが、そういうものではないんですか? また、同じような属性としてclassも同様なのでしょうか?

    • ベストアンサー
    • HTML
  • HTML文書のタグの属性をjavascriptで抜き出す。

    はじめまして。 現在javascriptでHTML文書にある要素の属性名を抜き出すロジックを 考えているのですが、詰まっています。 例えば <form name="A" action="B"> という要素があった場合にその属性名「name」「action」を抜き出したいのです。 HTML文書にある要素名を抜き出すロジックは何とか出来ました。 以下がその関数です。 -------ここから------- function test() { kazu=document.all.length //文書の要素数を設定 var tagname='' for(i=0; i<kazu; i++){ tagname=tagname+document.all(i).nodeName+'\n' //要素名を抜き出す。 } document.send.aa.value=tagname //フォーム部品に結果をセットする。 } ------ここまで----------- 要素名を抜き出している部分は document.all(i).nodeName とかけましたが 属性名を抜き出すのは document.all(i).attributes… のように書くんだろうな… と予測して実行したのですがエラーがでました。 DOM文書を読んでみたのですがいまいちピンときません。 どなたが教えていただけませんか? 使用しているブラウザはWindowsのIE5.5です。

  • 【js】attrで属性を取得するとき・・・

    js初心者です。 div全体をクリックしてリンクできるようにしたいと思い、下記ソースを書いています。 (js) <script type="text/javascript"> $(function(){ $(".go_content").click(function(){ window.location=$(this).find("a").attr("href"); return false; }); }); </script> (html) <div class="go_content"> テキストが入りますテキストが入ります。 <a href="http://xxxxxxx" target="_top" ></a> </div> これで、通常なら思ったとおりに動作してくれます。 しかし、このソースはあるページのなかにiframeで表示させます。 なので、<a>にtarget="_top"を指定しています。 上記スクリプトのままだと、aのhref属性しか取得できずに、フレーム内でリンクしてしまいます。 一緒にtarget属性も取得するにはどうすればよいのでしょうか? 何か良い方法があれば教えてください。 よろしくお願いします。

  • XHTMLとHTMLの違いについて

    XHTMLのHTMLの違いについて教えてください。 勉強するものの、これといった違いが判らずにこまってます。 (今のところ、HTMLとは記述方式が違うんだよ~とか、XMLの宣言が必要なんだよ~、ということはわかったのですが) (参考したURL) http://www.atmarkit.co.jp/fxml/askxmlexpert/022xhtml/22xhtml.html HTMLとXHTMLの違いとして以下の点が挙げられていることがわかりました。 ----------------------------------------------------------------- 1.文書は整形式でなければならない 2.要素名及び属性名は小文字でなければならない 3.非空要素には終了タグが必要である 4.属性値は常に引用符で括られなければならない 5.属性の省略化はしてはならない 6.meta、hr、br、img などは、空要素として書く 7.属性値内での改行を含む複数の空白は1つと見なす 8.スクリプトおよびスタイル要素の定義が異なる 9.要素の入れ子などSGMLの排除機能を再現できない 10.‘id’および‘name’属性をもつ要素は、‘id’属性を使用する ----------------------------------------------------------------- とあるのですが、違う部分っていうのは「こういった定義部分だけ」であって、動作として大きな違い「ここが違うんだ」といった部分はないのでしょうか? 「書式が厳密になっています。」言葉から、XHTMLは「HTMLをより厳密に書くもの」ということなのでしょうか? また、10番目の、 「‘id’および‘name’属性をもつ要素は、‘id’属性を使用する 」について、イメージできなかったのですが、一体何のことを言っているのでしょうか? 例えば、JavaScriptを使用して、要素を操作する場合は、 getElementById("ID名")にて、操作を行うべきである、と言っているのでしょうか?

    • ベストアンサー
    • HTML

専門家に質問してみよう