• ベストアンサー

フレーム関係の要素について

フレームを使用できるのは、HTML4.01・XHTML1.0のフレームセット型DTDのみで、XHTML1.1では使用できないということは、今後新しいXHTMLでは完全にフレーム関係の要素は使用できなくなるということでしょうか? 回答よろしくお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

とりあえず,まあざっくりと。 >XHTML1.1では使用できない 実は、んなことないのよね。 XHTML 1.0(副題:A Reformulation of HTML 4 in XML 1.0)は HTML 4.01を ある程度互換性を持たせて XML 1.0に合わせて書き直したものだった。 XHTML 1.1(副題:Module-based XHTML)は 今までの各要素を分類してそれぞれをモジュールとし、 各々のXHTML記述者が必要なモジュールを取り込んだり外したりして使うような設計になっている。 フレーム関連は例として挙げられている http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd の中でIGNORE(無視)に設定されているだけ。 Legacy Moduleを取り入れてあげて (Transitional相当が有効になる。この地点でiframeは有効。フレーム関連を使うには有効にしないと。) さらに,XHTML Framesを有効にする。 この追加に伴う,Document Modelの変更と,notationの二度読みを防ぐ処理をすれば 以下のように使用可能だ。 (ただし、IEは別なバグの都合上エラーが出る) ちなみにこの場合はHTML 4.01やXHTML 1.0 Strictと違い, frameset要素を使わずStrict同等の書き方をしてもW3C Markup Validatorに怒られない。 <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd"[ <!ENTITY % xhtml-legacy.module "INCLUDE"> <!ENTITY % xhtml-frames.module "INCLUDE"> <!ENTITY % xhtml-prefw-redecl.module "INCLUDE" > <!ENTITY % xhtml-prefw-redecl.mod PUBLIC "-//W3C//ELEMENTS XHTML Legacy Redeclarations 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml-legacy-redecl-1.mod"> <!ENTITY % xhtml-notations.module "IGNORE" > <!-- 二度読みの防止 --> <!ENTITY % xhtml-model.mod PUBLIC "-//W3C//ENTITIES XHTML 1.1 Document Model 1.0//EN" "http://www.w3.org/MarkUp/DTD/xhtml11-model-1.mod" > ]> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <title>ほげほげ</title> </head> <frameset> <frame src="hoge.html" /> <frame src="fuga.html" /> <noframes> <body> <p><a href="http://www.satoshii.org/markup/dtd/xhtml11-msxml.ja">別なバグ</a></p> </body> </noframes> </frameset> </html> 一応XHTML 1.1ではLegacy扱いのframeも, XHTML 2.0では「一応」XHTMLの規格から消えている。 http://www.w3.org/TR/xhtml2/introduction.html >Frames and Framesets: In HTML 4 multi-panel "pages" could be described using the frameset and frame elements. The Frames model is no longer defined in XHTML. Instead, if is defined through the separate [XFRAMES] specification. 俺の主観ではあるが,XHTML 2.0では ●br要素(break)の変わりにl要素(line)要素を導入 ●body要素直下以外に置いていいのか悩むh1-h6要素や多用されるdiv要素の代わりに 入れ子に出来るsection要素とh要素を導入 ●dl要素の子としてdi要素が登場してより柔軟に ●href属性がいろんな要素につけられるように 等といったXHTML 1.1までにあった問題点の解消の他に フォーム関連を扱うXForms,フレーム関連を扱うXFrames,リンク関係を扱うXLink,数学を扱うMathML, ベクター系画像を扱うSVG等 それぞれ別規格に分けて洗練させ、その成果をXHTML 2で取り込むようにしよう、としているような印象がある。 XFramesでは既存のXHTML 1.0やHTML 4にあった,「リロード(例:ブックマークからの再アクセス)するとページの状態が元に戻ってしまう」「文章に直接関係の無いtarget属性をつけなきゃいけない」等の問題点をフレーム構造を単独のxfmファイルに書き、それぞれの部分に対して,挿入される内容をURIで指定するようにするといった形で見事に解決している。現状ではブラウザ側での対応は絶望的だと思うが,個人的には期待している規格の一つ。 =========================== 話は変わるが、 CSS 3 Hyperlink Presentation Moduleでは target プロパティ、等も提案されている。 http://www.w3.org/TR/css3-hyperlinks/#target0 アドオンとか無くても,自分でユーザースタイルシートを書き換えて 統一できる! ===== #DTDにも問題があるといえばある。XML規格では認められている,名前空間接頭辞の中途変更ができないとか #それにしてもmiya_HNさん,連続して質問を出していた頃と比較すると 段違いに成長したね。

miya_HN
質問者

お礼

まだ、HTMLの要素しか勉強していなので深くは分からないのですが、完全にフレーム関係の要素が使用できなくなるわけではないんですね。 それに、HTMLもどんどん進化してるんですね。 フレーム関係の要素が消えるわけではなく、新しい規格で新しく生まれ変わるということでしょうか。 ありがとうございました。

その他の回答 (1)

回答No.2

XHTML1.1はXTHML1.0Strictがベースで、 1.0にあるカテゴリ的なもの(StrictやTransitional)も無くなるので XHTML1.1でコーディングするならフレームセットは使えません。 でもブラウザがHTML4.01・XHTML1.0のフレームセット型DTDをサポートする限り 「フレームは使える」もしくは「まだフレームは使ってもいい」という感じになるんじゃないでしょうか。 ブラウザが対応しなくなったら完全に「フレームセット終了」だと思います。

miya_HN
質問者

お礼

ブラウザが対応しなくなるまでですか。今のところは現在のフレーム関係の要素が使えるわけですね。 ありがとうございました。

関連するQ&A