[14] [[HTML]] の [DFN[[CODE(HTMLe)[base]] 要素型]]の要素は、 [[文書]]の[[基底URI]] や基底対象枠を指定するために使用することができます。 [17] HTML での基底 URI に関しては、 [[HTML//基底URI]] も参照してください。 [15] :[[開始タグ]]:必須 :[[終了タグ]] ([[HTML 2]], [[HTML 4]], [[ISO-HTML]]):禁止 :終了タグ (XHTML 1):必須 :[[内容模型]]:[[強制空要素]] :出現できる文脈:[CODE(HTMLe)[[[head]]]] 内の、参照を持つ要素の前に高々1個 :[[属性]]: ,属性名 ,値の型 ,既定値 ,意味 ,出典 ,[CODE(HTMLa)[[[href]]]] ,[[絶対URI]] ,(選択必須) ,基底 URI ,"[HTML 2], [HTML 4]" ,[CODE(HTMLa)[[[id]]]] ,(なし) ,固有識別子 ,"[XHTML 1.0 SE], Microsoft [[Word]]" ,[CODE(HTMLa)[[[target]]]] ,[CODE(SGML)[%[[FrameTarget]]]] ,(選択必須) ,既定の対象枠 ,[HTML 4] 非推奨 [CODE(HTMLa)[href]] 属性と [CODE(HTMLa)[target]] 属性のいずれかは必須です (が、 [[DTD]] でこれを表すことができないので、 両方の属性が存在する DTD では、両方省略可能になっています)。 [[#comment]] ** 出現できる文脈 [16] この要素は [CODE(HTMLe)[head]] 要素内に高々1個存在できますが [SRC[HTML 4]]、 外部参照を持つ要素の前になければなりません [SRC[HTML 4 仕様書]]。 [CODE(HTMLe)[base]] 要素の前に来得る、 外部参照を持ち得る要素型は [CODE(HTMLe)[[[script]]]], [CODE(HTMLe)[[[object]]]], [CODE(HTMLe)[[[link]]]] です。 (スクリプト内やスタイルシート内の参照も含まれるのでしょうか? だとしたら [CODE(HTMLe)[[[style]]]] 要素や、 [CODE(HTMLa)[style]] 属性または事象系属性を持つ任意の要素が該当します。) ところで、 [CODE(HTMLe)[head]] 要素自体も [CODE(HTMLa)[[[profile]]]] という値に [[URI]] を含む属性があります。でもそれ以前にもっていくのは不可能です。 [18] HTML 4 loose DTD でも [CODE(HTMLe)[base]] が出現可能なのは高々1回です。つまり、 [CODE(HTMLa)[href]] 用と [CODE(HTMLa)[target]] 用を別にするようなことはできない、 ということです。 [[#comment]] ** 他との関係 [27] HTML には [CODE(HTMLa)[[[codebase]]]] 属性があって、特定の要素の特定の処理における基底 URI を別途指定できます。 [[XHTML]] を他のマーク語彙と組合せる時の [CODE(HTMLe)[base]] 要素の影響は規定されていませんから、 どう解釈されるかわかりませんので危険です。 * [CODE(HTMLe)@en[base]] 要素の適用範囲 [8] [[不思議マーク付け]]的には、 [CODE(HTMLe)[base]] 要素は次の [CODE(HTMLe)[base]] 要素が現れるまで有効なのだそうです (少なくても [[WinIE]] はこの通り動くらしい)。 [CODE(HTMLe)[[[basefont]]]] 要素と同じですね。 [33] [[WinIE]] ([[MSHTML]]) において、 [CODE(HTMLe)[[[base]]]] 要素が [CODE(HTMLe)[[[head]]]] 中に存在する場合、 - [CODE(HTMLe)[[[body]]]] の [CODE(DOMa)[[[parentNode]]]] は [CODE(HTMLe)[[[base]]]] です。 - [CODE(HTMLe)[[[head]]]] 内の要素の内、 [CODE(HTMLe)[[[base]]]] の弟の [CODE(DOMa)[[[parentNode]]]] は [CODE(HTMLe)[[[base]]]] です。 - [CODE(HTMLe)[[[base]]]] の [CODE(DOMa)[[[childNodes]]]] には [CODE(HTMLe)[[[base]]]] の弟や [CODE(HTMLe)[[[body]]]] が含まれます。 - [CODE(HTMLe)[[[base]]]] の [CODE(DOMa)[[[parentNode]]]] は [CODE(HTMLe)[[[head]]]] です。 - [CODE(HTMLe)[[[base]]]] の [CODE(DOMa)[[[previousSibling]]]] は直近の兄です。 - [CODE(HTMLe)[[[base]]]] の [CODE(DOMa)[[[nextSibling]]]] は [CODE(DOM)[[[null]]]] です。 - [CODE(HTMLe)[[[head]]]] の [CODE(DOMa)[[[childNodes]]]] には [CODE(HTMLe)[[[base]]]] の兄や [CODE(HTMLe)[[[base]]]] が含まれます。 - [CODE(HTMLe)[[[body]]]] の [CODE(DOMa)[[[previousSibling]]]] は [CODE(HTMLe)[[[head]]]] です。 - [CODE(HTMLe)[[[body]]]] の [CODE(DOMa)[[[nextSibling]]]] は [CODE(DOM)[[[null]]]] です。 - [CODE(HTMLe)[[[head]]]] の [CODE(DOMa)[[[previousSibling]]]] は [CODE(DOM)[[[null]]]] です。 - [CODE(HTMLe)[[[head]]]] の [CODE(DOMa)[[[nextSibling]]]] は [CODE(HTMLe)[[[body]]]] です。 - [CODE(HTMLe)[[[head]]]] の [CODE(DOMa)[[[parentNode]]]] は [CODE(HTMLe)[[[html]]]] です。 - [CODE(HTMLe)[[[html]]]] の [CODE(DOMa)[[[childNodes]]]] には [CODE(HTMLe)[[[head]]]] と [CODE(HTMLe)[[[body]]]] が含まれます。 - [CODE(HTMLe)[[[base]]]] の [CODE(DOMa)[[[outerHTML]]]], [CODE(DOMa)[[[innerHTML]]]], [CODE(DOMa)[[[outerText]]]], [CODE(DOMa)[[[innerText]]]] には弟や [CODE(HTMLe)[[[body]]]] の内容も含まれます。 [CODE(HTMLe)[[[base]]]] の[[終了タグ]]はありません。 [CODE(HTMLe)[[[head]]]] の[[終了タグ]]は含まれます。 - [CODE(HTMLe)[[[head]]]] の [CODE(DOMa)[[[outerHTML]]]], [CODE(DOMa)[[[innerHTML]]]], [CODE(DOMa)[[[outerText]]]], [CODE(DOMa)[[[innerText]]]] には [CODE(HTMLe)[[[body]]]] の内容は含まれません。 ([[WinIE 6]] on [[Windows XP]] [[SP2]] で確認) 参考: [CITE[agenda 2002-03(下旬) - Personnel]] [34] >>33 >>3 のように [CODE(HTMLe)[[[body]]]] 内に複数 [CODE(HTMLe)[[[base]]]] を入れてみると、それ以降がすべて [CODE(HTMLe)[[[base]]]] に飲み込まれます。 [CODE(HTMLe)[[[base]]]] の終了タグがあっても無視されます。 ([[名無しさん]] [WEAK[2005-05-29 07:33:55 +00:00]]) [35] >>34 のテスト: ([[名無しさん]] [sage]) [37] こういう変な包含関係は [CODE(HTMLa)@en[[[contentEditable]]]] でも生じるらしい [CITE@en[contentEditable - Anne’s Weblog about Markup & Style]] ([[名無しさん]] [sage]) [38] >>33-35 [[WinIE 7]] で修正される予定だそうです。 [CITE@en[IEBlog : All your are belong to us]] ([[名無しさん]] [WEAK[2005-09-02 03:35:49 +00:00]]) [64] [CITE[「base要素でいろいろ」@水無月ばけらのえび日記]] ([[名無しさん]] [WEAK[2006-11-05 23:44:46 +00:00]]) [65] [CITE@en[crisp’s blog » Blog Archive » Broken parsers; the importance of BASE]] ([CODE[2007-01-12 23:43:01 +09:00]] 版) ([[名無しさん]] [WEAK[2007-01-12 14:45:56 +00:00]]) [FIG[ [FIGCAPTION[ [66] [CITE@en[Useful CSS Snippets - webSemantics]] ([[Mike Foskett]] 著, [CODE[2007-01-13 16:06:46 +09:00]] 版) ]FIGCAPTION] > An unusual effect. IE refused to copy or highlight body content text. The issue was related to the use of the base element in the head section. Without it, copy worked. With it, IE refused to highlight the text. > Example: [PRE(HTML code)[ ]PRE] Caused issues. The solution was to replace it with: [PRE(HTML code)[ ]PRE] > Other head elements may also cause this problem, though the solution should be similar. ]FIG] * 歴史 ** 構想 [FIG[ [FIGCAPTION[ [112] [CITE[Re: status. Re: X11 BROWSER for WWW]] ([TIME[2004-05-12 00:03:58 +09:00]] 版) ]FIGCAPTION] >The base address tag is not used, nor is highlighting HP1 etc. ]FIG] [FIG[ [FIGCAPTION[ [113] [CITE[Re: Is there a paper which describes the www protocol?]] ([TIME[2003-08-10 13:44:07 +09:00]] 版) ]FIGCAPTION] >Base Address > Anchors specify addresses of other documents, in a from relative to the address of the current document. Normally, the address of a document is known to the browser because it was used to access the document. However, is a document is mailed, or is somehow visible with more than one address (for example, via its filename and also via its library name server catalogue number), then the browser needs to know the base address in order to correctly deduce external document addresses. > The format of this tag is not yet specified. ]FIG] [FIG[ [FIGCAPTION[ [103] [CITE[Tags used in HTML]] ( ([TIME[1992-11-13 08:29:05 +09:00]] 版)) ]FIGCAPTION] >Anchors specify addresses of other documents, in a from relative to the address of the current document. Normally, the address of a document is known to the browser because it was used to access the document. However, is a document is mailed, or is somehow visible with more than one address (for example, via its filename and also via its library name server catalogue number), then the browser needs to know the base address in order to correctly deduce external document addresses. >The format of this tag is not yet specified. NOT CURRENTLY USED ]FIG] ** [CODE(HTMLe)@en[savedas]] 要素案 (1992/11-1993/1) [FIG[ [FIGCAPTION[ [105] [CITE[HTML DTD issues]] ( ([TIME[2003-08-05 15:39:18 +09:00]] 版)) ]FIGCAPTION] > 6. Any more thoughts on the BaseAddress tag? ]FIG] [FIG[ [FIGCAPTION[ [106] [CITE[Re: HTML DTD issues]] ( ([TIME[2003-08-19 00:53:43 +09:00]] 版)) ]FIGCAPTION] >Yes. It should be in. I think. I've mentioned in http://info.cern.ch/hypertext/WWW/MarkUp/Future.html ]FIG] [FIG[ [FIGCAPTION[ [107] [CITE[Future plans for HTML]] ( ([TIME[1992-12-02 18:35:56 +09:00]] 版)) ]FIGCAPTION] >Base address :[CODE(HTMLe)@en[savedas]]: Could be a name for the tag to give the address with which the document was saved, so that relative links could be resolved even when a document is found out of context (like mailed). ]FIG] [FIG[ [FIGCAPTION[ [78] [CITE[WWW-Talk Jan-Mar 1993: Re: HTML todo list]] ( ([TIME[2013-03-09 04:39:15 +09:00]] 版)) ]FIGCAPTION] > Now, what about the SAVEDAS adddress so that from justthe content of the document hte partial UDIs can be resolved? I think that is a useful thing, and could be essentail. I will put that in as Standard. ]FIG] [FIG[ [FIGCAPTION[ [77] [CITE[WWW-Talk Jan-Mar 1993: Re: HTML todo list]] ( ([TIME[2013-03-09 04:38:00 +09:00]] 版)) ]FIGCAPTION] > Yuk, but OK for now. (I have lots to say about URLs, but until I have time to do something about it, I'll leave them be :-) ]FIG] ** [CODE(HTMLe)@en[base]] 要素の誕生 (1993/3) [114] [CODE(HTMLe)@en[[[base]]]] [[要素]]が初めて登場するのは、現在確認されている中では、1993年3月10日版の仕様書と見られる >>111 です。収録されている [[DTD]] にも [CODE(HTMLe)@en[[[base]]]] [[要素]]が含まれています。 [FIG[ [FIGCAPTION[ [111] ]FIGCAPTION] >8 [CODE(HTMLe)@en[BASE]] >This element allows the URL of the document itself to be recorded in situations in which the document may be read out of context. URLs within the document may be in a "partial" form relative to this base address. >Where the base address is not specified, the reader will use the URL it used to access the document to resolve any relative URLs. >The one attribute is: :[CODE(HTMLa)@en[HREF]]:the URL ]FIG] ;; [116] 2月3日付けの [[DTD]] には [CODE(HTMLe)@en[[[base]]]] [[要素]]は含まれていません。また [CODE(HTMLe)@en[[[savedas]]]] [[要素]]が含まれている [[DTD]] もなかったようです。 [REFS[ - [CITE@en[HTML DTD (revision 1.4 / 1993-02-03)]] ([TIME[2013-03-09 10:57:02 +09:00]] 版) ]REFS] [115] その後の版である次の文書にも [CODE(HTMLe)@en[[[base]]]] [[要素]]は引き継がれています。 [REFS[ - [76] - [104] [CITE@en[draft-ietf-iiir-html-00 - Hypertext Markup Language (HTML): A Representation of Textual Information and MetaInformation for Retrieval and Interchange]] - [26] [[HTML 2.0]] ([[RFC 1866]]) -- [CITE[5.2.2. Base Address: [CODE(HTMLe)[BASE]]]] ]REFS] [FIG[ [FIGCAPTION[ [108] RFC 1866 (HTML 2.0) [CSECTION@en[5.2.2. Base Address: BASE]] ]FIGCAPTION] > The optional element provides a base address for interpreting relative URLs when the document is read out of context (see 7, "Hyperlinks"). The value of the HREF attribute must be an absolute URI. > 省略可能な [DFN[[CODE(HTMLe)[base]] 要素]]は、 文書が文脈外で読まれる時に[[相対URL]]を解釈するための基底番地を提供します。 [CODE(HTMLa)[href]] 属性の値は[[絶対URI]]でなければなりません。 ]FIG] ** 実装の進展 [110] [[Netscape Navigator]] 1.1 (1995年) は既に [CODE(HTMLe)@en[[[base]]]] [[要素]]に対応していたようです [SRC[要出典]]。 1.0 あるいはそれ以前から実装されていたのかもしれません。 [39] [[libwww]]の[[HTML]][[構文解析器]]は1996年7月20日のRelease 4.1b3で[CODE(HTMLe)@en[[[base]]]]を実装しました。 [FIG[ [FIGCAPTION[ [75] [CITE[Change History for W3C Sample Code Library]] ( ([TIME[2002-06-07 13:08:53 +09:00]] 版)) ]FIGCAPTION] > Updated HTML parser to support [CODE(HTMLe)@en[BASE]] tag and [CODE(HTMLe)@en[LINK]] tag ]FIG] [73] [CITE[/Mosaic/Unix/source/ のインデックス]] ([TIME[2013-03-05 13:16:59 +09:00]] 版) の Unix 版 2.7b5 (1996年7月) のソースを見ると [CODE(HTMLe)@en[[[base]]]] [[要素]]にはまだ対応していないようです。 ;; [74] 96年にもなってまだ対応していないとは信じがたいが・・・。 ** HTML3 [19] [CODE(HTMLe)[base]] 要素に [CODE(HTMLa)[[[id]]]] を振って、相対 URI を使う文脈でどの基底 URI (たとえば画像用の基底 URI) を使うのかを選べるようにしたらどうかという案もありました。 ''www-html@w3.org from May 1995: Re: processing by browsers'' ** HTML4 [REFS[ - [109] [[HTML 4]] -- [CITE[12.4 Path information: the [CODE(HTMLe)[BASE]] element]] ]REFS] ** HTML5 [REFS[ -[69] [CITE[Issues concerning the element and xml:base]] ([[Ian Hickson ]] 著, [CODE[2007-05-01 06:53:18 +09:00]] 版) -[71] [CITE[Re: Issues concerning the element and xml:base]] ([[Ian Hickson ]] 著, [CODE[2007-08-07 09:32:28 +09:00]] 版) -[92] [CITE@en[Web Applications 1.0 r5711 Make take effect everywhere, not just as a child of .]] ( ([TIME[2010-12-08 09:22:00 +09:00]] 版)) -[94] [CITE[''''''[''''''whatwg'''''']'''''' elements, again]] ( ([TIME[2011-05-08 13:38:23 +09:00]] 版)) -[95] [CITE['''['''whatwg''']''' in ]] ([TIME[2011-07-20 10:17:19 +09:00]] 版) -[97] [CITE[''''''[''''''whatwg'''''']'''''' elements security issue]] ( ([TIME[2011-12-16 08:35:05 +09:00]] 版)) -[99] [CITE@en[Web Applications 1.0 r7266 Update handling of the .href IDL attribute and clarify how 'document's base URL' is defined.]] ( ([TIME[2012-08-25 03:52:00 +09:00]] 版)) ]REFS] * 統計 [67] 今朝 ([WEAK[2007-05-01 02:59:14 +00:00]]) の #whatwg より ([[JST]]): [FIG[ > - 08:15 about 5% of sites have 1 tag, apparently - 08:16 0.03% have 2 - 08:16 0.0017% have 3 - 08:16 and a few thousand have more than 3 - 08:18 so we're talking about a few million pages here - 08:18 with 2 or more elements - 08:19 oh actually this was only counting _different_ values for - 08:19 so a few million pages use two different values for ]FIG] * 例 [28] [PRE(HTML)[ Our Products

Have you seen our Bird Cages? ]PRE] [WEAK[(HTML 4 仕様書より、改)]] この場合、この文書自体の [[URI]] にかかわらず、 [CODE(HTMLe)[a]] 要素のリンク先は [SAMP(URI)[http://www.example.com/cages/birds]] になります。 * メモ