[1] [[HTML]] 系マーク付け言語では一般に、
[[埋込みリンク]]要素でリンクされる (埋め込まれる) 資源の [[URI参照]]を書く属性です。

[2] >>1 HTML の要素で [CODE(HTMLa)[src]] 属性を持つものの例としては、
[CODE(HTMLe)[[[img]]]], [CODE(HTMLe)[[[embed]]]], [CODE(HTMLe)[[[input]]]], 
[CODE(HTMLe)[[[script]]]], [CODE(HTMLe)[[[audio]]]], [CODE(HTMLe)[[[video]]]],
[CODE(HTMLe)@en[[[source]]]], [CODE(HTMLe)@en[[[track]]]],
[CODE(HTMLe)[[[frame]]]], [CODE(HTMLe)[[[iframe]]]] などがあります。

* 仕様書

[REFS[
- [25] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#attr-embed-src>
]REFS]

* img 要素 src 属性 (HTML, XHTML 1)

[4] [[HTML]] の [CODE(HTMLe)[[[img]]]] 要素の [DFN[[CODE(HTMLa)[src]] 属性]]は、
画像資源の位置を指定します。

[5] 仕様書: 
- [[HTML 4]]
-- [CODE(HTMLe)[img]] 要素 [CODE(HTMLa)[src]] 属性
<IW:HTML4:"struct/objects.html#adef-src-IMG">
-- [HTML4CDATA] [CSECTION[6.2 SGML basic types]]
<IW:HTML4:"types.html#type-cdata">

[[#comment]]


** 属性値

[6] この属性値の値は [CODE(SGML)[%[[URI]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[48] 稀に、 URI 参照の前後に[[改行]]が含まれていることがあります。
HTML 4 によれば、 UA は [CODE(SGML)[CDATA]]
属性値の前後の[[空白]]を無視しても構いません [SRC[HTML4CDATA]]。
主要な Web ブラウザは無視するようですが、
無視しない利用者エージェントもあります。
HTML 4 は属性値の前後に空白を入れるべきではないとしています。

[7] この属性は必須です。

[[#comment]]


** Mozilla の内部画像

[8] [CODE(HTMLa)[src]] 属性の値は本来 URI 参照ですが、 [[mosaic]] 系 UA 
の中には特定の値を指定すると内部組込みの特定の画像を表示することがあります。

[9] 存在が知られている組込み画像
,[CODE(HTMLa)[src]]
,[CODE[internal-gopher-menu]]
,[CODE[internal-gopher-sound]]
,[CODE[internal-gopher-movie]]
,[CODE[internal-gopher-telnet]]
,[CODE[internal-gopher-text]]
,[CODE[internal-gopher-audio]]
,[CODE[internal-gopher-binary]]
,[CODE[internal-gopher-find]]
,[CODE[internal-gopher-image]]
,[CODE[internal-gopher-index]]

[10] [[相対URI]] と区別できないのであんまりよくないと思いますが。。。

[[#comment]]


*** 実装

[31] [[NC]] 4.01 で [CODE[internal-gopher-audio]] と 
[CODE[internal-gopher-find]] が表示できないみたい。

[11] [[Gecko]] な [[Mozilla]] では  [[NN]]4 以前より表示できる数が少ないようです。
特に、 [[Netscape]] 6 くらいの古い Gecko Mozilla ではどれも表示できません。
(ということは、わざわざその後復元されたということです。)

[CODE(URI)[[[resource:]]///res/html/gopher-[VAR[*]].gif]]
が使われているみたいです。

[23] >>11 勝手にファイルを追加したも反映はされないみたいです。

[13] >>12 によれば [[IBM]] の [[WebExplorer]] も一部対応しているそうです。
また、 WebExplorer には [CODE(HTMLa)[[[internal]]]] 
属性があって、こちらに組込み画像名を指定する方法も使えるそうです。

[[#comment]]


*** 歴史

[16] 由来は [[Mosaic]] までさかのぼります: 
''"internal-gopher-image"?!?'' 
<http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q4.messages/819.html>

[[#comment]]


** 不思議解釈

[51] ([CODE(HTMLe)[[[img]]]] 要素について)

> 画像を表示させるタグです。画像には「jpg(jpeg)」「gif」「png」
があります。拡張子も記載しないと表示されません。オンマウス
(マウスを画像の上に乗せること)で説明文を表示させたい場合は
「alt属性」を記載します。

出典:
[CITE[画像/アオゾラウェブデザイン[Aozora Web Design][HTMLタグ/tag]]] 
<http://www.aozoraweb.com/design/html/image.shtml>
(2005年4月現在)

[[拡張子]]がないと不都合が出る[[利用者エージェント]]が存在することは疑いないが、
文脈的に著者がそこまで配慮してこの引用文を書いたとは思えない。
不思議解説者はこのように脳内の妄想をさも真理であるかのように書くのだ。

[[#comment]]


*** 参考文献

- [12] ''Browser-interne Ressourcen'' <http://www.meb.uni-bonn.de/html_tutorial/intgraf.htm#a2>
- [14] 無題
<http://www.cs.vu.nl/~eliens/documents/javascript/img/internal_images.html>

[[#comment]]


*** メモ

[15] ところでなぜだかわかりませんが、
この隠し機能を説明している文書はほとんどが非英語の欧州語です。なぜでしょ。

[20] [[Mozilla]] で、 [[CSS]] で 
[SAMP(CSS)[background-image: url(internal-gopher-text)]] 
とかしてみたけど流石に駄目でした。

[55]
[CITE[EMail Msg <9307040959.AA09910@wintermute.ncsa.uiuc.edu>]] ([CODE[2007-07-01 04:37:40 +09:00]] 版) <http://ksi.cpsc.ucalgary.ca/archives/WWW-TALK/www-talk-1993q3.messages/43.html>
([[名無しさん]])

[[#comment]]


** 安全性

[49] [CODE(HTMLe)[[[img]]]] 要素型の安全性の項もご覧下さい。

[[#comment]]


** メモ

[60] [CITE[はてなブックマークのコンテンツの JavaScript を高速化する - IT戦記]] ([TIME[2009-02-08 18:51:12 +09:00]] 版) <http://d.hatena.ne.jp/amachang/20081126/1227700830>

>Firefox での JavaScript による img.src の設定が激重なのです。

* input 要素 src 属性 (HTML, XHTML 1)

[3] [[HTML]] の [CODE(HTMLe)[[[input]]]] 要素の
[DFN[[CODE(HTMLa)[src]] 属性]]は、
図形的提出ボタンを飾る画像を指定します。

この属性は、 [CODE(HTMLa)[[[type]]]] 属性が [CODE(HTML)[[[image]]]]
の時使えます。

[40] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[input]] 要素 [CODE(HTMLa)[src]] 属性
<IW:HTML4:"interact/forms.html#adef-src">

[50]
HTML 4 DTD の[[注釈]] (参考) には
[Q[for fields with images]] と説明があります。
([[名無しさん]] [sage])

[[#comment]]


** 属性値

[41] この属性の値は [CODE(SGML)[%[[URI]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[42] この属性は省略可能です。

[[#comment]]


** メモ

[43] [CODE(HTML)[[[image]]]] 制御子の説明もご覧ください。

[21] 
Softbank allows <input type=submit src> [SOFTBANK] 3.12.2. 

* [CODE(HTMLe)@en[embed]] 要素 [CODE(HTMLa)@en[src]] 属性

[26] [CODE(HTMLe)@en[[[embed]]]] [[要素]]の [DFN[[CODE(HTMLa)@en[[[src]]]]]]
[[内容属性]]は、埋め込まれる[[資源]]の[[番地]]を指定するものです [SRC[>>25]]。

[27] [[属性値]]は、 [[valid non-empty URL potentially surrounded by spaces]]
でなければ[['''なりません''']] [SRC[>>25]]。

[28] [CODE(HTMLa)@en[[[itemprop]]]] [[属性]]が指定されている場合、
本[[属性]]も指定しなければ[['''なりません''']] [SRC[>>25]]。

[30] [CODE(DOMi)@en[[[HTMLEmbedElement]]]] [[インターフェイス]]の
[DFN[[CODE(DOMa)@en[[[src]]]]]] [[IDL属性]]は、
[CODE(HTMLa)@en[[[src]]]] [[内容属性]]を[[反映]]しなければ[['''なりません''']] [SRC[>>25]]。
[[URL]] として[[反映]]します。

[29] [[Webブラウザー]]の処理については、 [CODE(HTMLe)@en[[[embed]]]]
を参照。

* frame 要素、iframe 要素 src 属性 (HTML, XHTML 1)

[32] [[HTML]] の [CODE(HTMLe)[[[frame]]]] 要素・
[CODE(HTMLe)[[[iframe]]]] 要素の 
[DFN[[CODE(HTMLa)[src]] 属性]]は、そのフレームの初期内容の場所を指定します。

** 仕様書

[REFS[
- [17] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-05-06 10:42:35 +09:00]] 版) <https://html.spec.whatwg.org/#attr-iframe-src>
]REFS]

** 意味

[18] [CODE(HTMLa)@en[[[src]]]] [[属性]]は、
[[要素]]の[F[入れ子閲覧文脈]]が[RUBYB[含む][contain]][[ページ][Web頁]]の[[番地]]を指定するものです [SRC[>>17]]。

** 属性値

[19] [[属性値]]は、[[valid non-empty URL potentially surrounded by spaces]]
でなければ[['''なりません''']] [SRC[>>17]]。

[35] この属性は省略可能です。

[22] [CODE(HTMLe)@en[[[iframe]]]] [[要素]]の [CODE(HTMLa)@en[[[itemprop]]]] [[属性]]が指定されている場合は、
[CODE(HTMLa)@en[[[src]]]] [[属性]]も指定しなければ[['''なりません''']] [SRC[>>17]]。

;; [24] 本[[属性]]が指定されなかった場合、 [CODE(HTMLa)@en[[[srcdoc]]]]
[[属性]]が使われます (両方あればそちらが使われます)。どちらもなければ、
[CODE(URI)@en[[[about:blank]]]] が使われます。

** 応用

[39]
>>38 より、実装は直接再帰状態を扱う必要がありません。
しかし、間接的に再帰状態なのは陽に禁止されてはいません。
(意味が無いのでするべきではないでしょう。)

直接にせよ間接にせよ、実装は自分自身を参照していないかチェックするべきでしょう。
(しかし必死でレンダリングを繰り返す哀れなブラウザも少なくないのが事実です。)

** 関連


[53] 
[CODE[iframe]] [[要素]]には [CODE[srcdoc]]
[[属性]]もあります。
[CODE[src]]
[[属性]]と
[CODE[srcdoc]]
[[属性]]の一方のみ指定します。

** 歴史

[33] 仕様書:
- [[HTML 4]]
-- [CODE(HTMLe)[frame]] 要素 [CODE(HTMLa)[src]] 属性 
<IW:HTML4:"present/frames.html#adef-src-FRAME">
-- Setting the initial contents of a frame
<IW:HTML4:"present/frames.html#idx-frame-3">

[34] この属性の値は [CODE(SGML)[%[[URI]]]] です。
[[SGML]] 的には [CODE(SGML)[[[CDATA]]]] です。

[38]
但し、フレームの定義と同じ文書の内容を参照することはできません
[SRC[HTML 4 16.2.2.1]]。

仕様書の例 (>>37) は [CODE(HTMLe)[noframes]] にある要素を参照していますが、
自分自身 (フレーム集合文書) そのものを指すことも当然できないのでしょう。

** 例

[36] 4つのフレームがあるフレーム集合文書の例 [SRC[HTML 4 16.2.2.1]]
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="33%,33%,33%">
  <FRAMESET rows="*,200">
      <FRAME src="contents_of_frame1.html">
      <FRAME src="contents_of_frame2.gif">
  </FRAMESET>
  <FRAME src="contents_of_frame3.html">
  <FRAME src="contents_of_frame4.html">
</FRAMESET>
</HTML>
]PRE]

レンダリング例:
[PRE[
 ------------------------------------------
|Frame 1     |Frame 3       |Frame 4       |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
|            |              |              |
-------------|              |              |
|Frame 2     |              |              |
|            |              |              |
|            |              |              |
 ------------------------------------------
]PRE]

それぞれのフレームに [CODE(HTMLa)[src]] で指定された[[資源]]をレンダリングしたのが初期状態です。

[37] 同じ文書を参照する'''違法'''な例 [SRC[HTML 4 16.2.2.1、改]]
[PRE(HTML)[
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
   "http://www.w3.org/TR/html4/frameset.dtd">
<HTML>
<HEAD>
<TITLE>A frameset document</TITLE>
</HEAD>
<FRAMESET cols="50%,50%">
  <FRAME src="contents_of_frame1.html">
  <FRAME src="#ANCHOR_IN_SAME_DOCUMENT">
  <NOFRAMES>
  ...some text...
  <H2><A name="ANCHOR_IN_SAME_DOCUMENT">Important section</A></H2>
  ...some text...
  </NOFRAMES>
</FRAMESET>
</HTML>
]PRE]

この例では、2つ目の [CODE(HTMLe)[frame]] で[[素片識別子]]だけの
[[URI参照]]を指定しています。つまり、 [CODE(HTMLe)[[[noframes]]]]
要素内にある、指定された名前の [CODE(HTMLe)[a]]
要素を参照しているのですが、このような指定は'''違法'''とされています。

* [CODE(HTMLe)@en[script]] 要素 [CODE(HTMLa)@en[src]] 属性

[86] [CODE(HTML)@en[[[<script src>]]]] 参照。

* [CODE(HTMLa)@en[src]] 大域属性 (XHTML2)

[69] [[XHTML2]] の[[大域属性]] [DFN[[CODE(HTMLa)@en[[[src]]]]]]
は、[[埋め込み資源]]の [[URL]] を表すものでした。従来 [CODE(HTMLe)@en[[[img]]]]
や [CODE(HTMLe)@en[[[object]]]] のような特定の[[要素]]でしか[[外部資源]]の[[埋め込み]]はできませんでしたが、
この[[属性]]によって任意の[[要素]]で埋め込めるようになりました。

** 歴史

[70] [[大域属性]]としての [CODE(HTMLa)@en[[[src]]]] は [[XHTML2]]
の2つ目の[[作業原案]]で追加されました。

;; [CITE@en[- XHTML Attribute Collections]] ([TIME[2002-12-12 23:58:38 +09:00]] 版) <http://www.w3.org/TR/2002/WD-xhtml2-20021211/mod-attribute-collections.html#adef_attribute-collections_src>

* [CODE(XMLe)@en[atom:content]] 要素 [CODE(XMLa)@en[src]] 属性 (Atom 1.0)

[61] [[Atom 1.0]] の [CODE(XMLe)@en[[[atom:content]]]] [[要素]]の
[DFN[[CODE(XMLa)@en[src]] [[属性]]]]は、[[リンク]]される[[内容]]の [[URL]]
を表します。

[62] 
:[[要素]]:[CODE(XMLe)@en[[[atom:content]]]]
:[[属性名]]:[CODE(XMLa)@en[[[src]]]] (「[[source]]」 (「[[出典]]」) より)
:[[データ型]]:[[IRI参照]]
:[[既定値]]:([[要素]]の[[内容]])

** 仕様書

-[63] [CITE@en[RFC 4287 - The Atom Syndication Format]] ([[IETF]] [[提案標準]])
--<http://tools.ietf.org/html/rfc4287#section-4.1.3.2>

** 属性値

[64] [[属性値]]は [[RFC 3987]] [[IRI参照]]でなければ[['''なりません''']]
[SRC@en[[[RFC 3987]] 4.1.3.2.]]。

[65] [[RELAX NG]] [[スキーマ]] ([[参考]]) では [CODE@en[[[atomUri]]]]
となっています [SRC@en[[[RFC 3987]] 4.1.3.]]。

** 処理モデル

[67] [[Atom処理器]]は、 [CODE(XMLa)@en[[[src]]]] [[属性]]を次のように使って[['''構いません''']]
[SRC@en[[[RFC 3987]] 4.1.3.2.]]。
- [[内容]]を[[取り出し]]するのに使用する
- [[遠隔内容]]を無視することにする
- [[遠隔内容]]を[[局所内容]]とは異なる方法で示すことにする

** 関連

[66] [CODE(XMLa)@en[[[src]]]] [[属性]]が存在する場合には、
[CODE(XMLe)@en[[[atom:content]]]] [[要素]]は[[空]]でなければ[['''なりません''']]
[SRC@en[[[RFC 3987]] 4.1.3.2.]]。

[68] [CODE(XMLa)@en[[[src]]]] [[属性]]がある場合、
[CODE(XMLa)@en[[[type]]]] [[属性]]もある[['''べきです''']]。更に、
その[[属性値]]は [[MIME]] [[媒体型]]でなければ[['''なりません''']]
([CODE(XML)@en[[[text]]]]、[CODE(XML)@en[[[html]]]]、
[CODE(XML)@en[[[xhtml]]]] であってはなりません) [SRC@en[[[RFC 3987]] 4.1.3.2.]]。
この場合の [CODE(XMLa)@en[[[type]]]] [[属性値]]はヒントであって、
[[鯖]]が[[内容]]と共に[[媒体型]]の情報も提供する場合にはそちらが権威を持ちます
[SRC@en[[[RFC 3987]] 4.1.3.2.]]。

* メモ

[57]
[CITE[SSIならぬクライアントサイドインクルード(CSI)を実現できる「sprinkle.js」:phpspot開発日誌]] ([CODE[2007-09-23 18:21:15 +09:00]] 版) <http://phpspot.org/blog/archives/2007/09/ssicsisprinklej.html>
([[名無しさん]])

[58]
[CITE@ja[div 要素に src 属性はちょっと、、 | WWW WATCH]] ([TIME[2007-09-23 18:15:39 +09:00]] 版) <http://hyper-text.org/archives/2007/09/sprinkle_js.shtml>

[59] [CITE[SMIL 3.0 Tiny Profile]] ([TIME[2008-12-02 00:45:09 +09:00]] 版) <http://www.w3.org/TR/2008/REC-SMIL3-20081201/smil-tiny-profile.html#smilTinyNs-ServerPL-support>
([[informative]])

>
[PRE(XML example code)[
<?wsx version="1.0"?>
<smil>
<seq>
<media src="c:\wmpub\wmroot\audio1.wma" clipBegin="2:42" />
<media src="c:\wmpub\wmroot\audio2.wma" clipBegin="0:00" />
<media src="c:\wmpub\wmroot\audio3.wma" clipBegin="2min" />
<media src="c:\wmpub\wmroot\audio4.wma" clipBegin="0h" dur="30" />
</seq>
</smil>
]PRE]



[71] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
<http://www.w3.org/TR/2009/REC-xforms-20091020/#structure-attrs-link>

[72] [CITE@EN[XForms 1.1]]
([TIME[2009-10-20 22:51:54 +09:00]] 版)
<http://www.w3.org/TR/2009/REC-xforms-20091020/#structure-model-instance>

[73] [CITE@en-US[XBL 2.0]]
( ([TIME[2012-05-03 02:23:03 +09:00]] 版))
<http://dev.w3.org/2006/xbl2/Overview.html#src>

[74] [CITE@en[Web Applications 1.0 r7809     Define frame.src as reflecting as URL. Also, typo fixes.]]
( ([TIME[2013-04-12 07:05:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7808&to=7809>

[75] [CITE@en[RDFa Core 1.1 - Second Edition]]
( ([TIME[2013-08-15 17:12:47 +09:00]] 版))
<http://www.w3.org/TR/rdfa-core/#A-src>

[76] [CITE@en[RDFa Core 1.1 - Second Edition]]
( ([TIME[2013-08-15 17:12:47 +09:00]] 版))
<http://www.w3.org/TR/rdfa-core/#h4_use-of-curies-in-specific-attributes>

[77] [CITE@en[HTML+RDFa 1.1]]
( ([TIME[2013-08-20 15:49:04 +09:00]] 版))
<http://www.w3.org/TR/2013/REC-html-rdfa-20130822/#extensions-to-the-html5-syntax>

[78] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#src>

[79] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#src0>

[80] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#src1>

[81] [CITE@en-US[XML Binding Language (XBL) 2.0]]
( ([TIME[2007-03-16 22:20:16 +09:00]] 版))
<http://www.w3.org/TR/2007/CR-xbl-20070316/#src2>

[82] [CITE@en[Web Applications 1.0 r2566       Make <img src=''> a special case. (credit: bz)]]
( ([TIME[2008-12-24 20:04:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=2565&to=2566>

[83] [CITE@en[HTML Speech Incubator Group Final Report]]
( ([TIME[2011-12-05 17:46:22 +09:00]] 版))
<http://www.w3.org/2005/Incubator/htmlspeech/XGR-htmlspeech-20111206/#dfn-src>

[85] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 23:00:33 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>

[44] [CITE@en[Clarify image display when src is an empty string]]
([[mwenge]]著, [TIME[2018-01-03 04:48:31 +09:00]])
<https://github.com/whatwg/html/commit/fdd60d3cfe925856f51c804717f7878d9deda966>

[45] [CITE@en[Clarify image display when src is an empty string, again]]
([[mwenge]]著, [TIME[2018-01-05 04:40:54 +09:00]])
<https://github.com/whatwg/html/commit/50c65e0c896a8fff2ed499cb3a1e325c56e61411>

[46] [CITE@en[Treatment of fallback image on <img src=''> · Issue #3280 · whatwg/html]]
([TIME[2018-01-07 13:24:02 +09:00]])
<https://github.com/whatwg/html/issues/3280>

[47] [CITE@en[Clarify image display when src is an empty string by mwenge · Pull Request #3320 · whatwg/html]]
([TIME[2018-01-07 13:24:26 +09:00]])
<https://github.com/whatwg/html/pull/3320>

[52] [CITE@en[Editorial: nested browsing context is a member, not a type]]
([[annevk]], [TIME[2019-11-27 02:46:03 +09:00]], [TIME[2022-01-18T08:42:39.000Z]])
<https://github.com/whatwg/html/commit/6b737bbc428facf34ec3728c0912cf9e172d0ea4>