ins
要素型 (HTML, XHTML 1)[1] HTML の ins
要素は、
文書のある版で挿入された部分を表します。
例えば、仕様書第三次案で第二次案と比べて変更された部分を明記した時には、
追加された部分を ins
タグで括ります。
[24] 仕様書:
http://www.w3.org/1999/xhtml
ins
(insert
(挿入) より)
(%flow;)*
>>4body
内ほぼどこでも >>4属性名 | 属性値 | 既定値 | 説明 | 状態 | 出典 |
cite | URI参照 | (なし) | 修正事由 | [HTML4] | |
class | 級 | [HTML4] %coreattr | |||
datetime | %Datetime | (なし) | 修正日時 | [HTML4] | |
dir | 書字方向 | [HTML4] %i18n | |||
id | 一意識別子 | [HTML4] %coreattr | |||
lang | 自然言語 | [HTML4] %i18n | |||
xml:lang | 自然言語 | [XHTML1] | |||
onclick | [HTML4] %events | ||||
ondblclick | [HTML4] %events | ||||
onkeydown | [HTML4] %events | ||||
onkeypress | [HTML4] %events | ||||
onkeyup | [HTML4] %events | ||||
onmousedown | [HTML4] %events | ||||
onmousemove | [HTML4] %events | ||||
onmouseout | [HTML4] %events | ||||
onmouseover | [HTML4] %events | ||||
onmouseup | [HTML4] %events | ||||
style | スタイル情報 | [HTML4] %coreattr | |||
title | 注釈的題 | [HTML4] %coreattr |
[4] ins
要素や del
要素は HTML では特殊で、ブロック水準要素としても行内要素としても使用できます。
(両方同時にはできません。)
[5]
ins
要素や del
要素が行内要素として使用されているときには、
ブロック水準要素を内容とすることはできません。
逆にブロック水準要素として使われているときに行内要素や文字データを子供にしてはいけないとは
HTML 4 仕様書には書いてないみたいです。
ただ、仮に ins
タグや del
タグを取り去ったときに行内要素や文字データが
body
要素の子供になってしまうような場合は問題でしょう。
[6] HTML 4 仕様書にたぶん明確に書かれていないと思いますが、
%flow
な文脈 (ブロック水準要素も行内要素も来得る文脈)
では ins
要素や del
要素はどのように振る舞うべきかという問題があります。
理想的には、
<li> <p> <ins> <p/> </ins> </li>
はブロック水準要素として、
<li> あいうえお<ins>かきくけこ</ins>さしすせそ </li>
は行内要素として働いて欲しいですが、これを機械的に区別するなら兄弟や子供をチェックしないと決定できません。
[14]
HTML 4 は ins
と del
を body
要素型の添加要素指定に入れています。
このように添加要素を使った DTD では、
空白の SGML 的処理が他の要素とは違ってきます。詳しくは SGML//空白を参照。
[15]
HTML 4 DTD では body
で添加されていながらどの要素型でも除外されていないので、 DTD 的には本当にどこにでも
(例えば ul
要素の直下や table
要素の直下や legend
要素の前など。ただし img
のような強制空要素内は不可。) にも ins
や del
が入って良いことになってしまいます。
仕様書でも特にそれに言及していません。
それでよいのでしょうか。
(添加要素指定を使っていない DTD、例えば XHTML 1 ではこの問題はありません。)
ul
の直下などは使えて嬉しいこともありそうですが、 ins
や del
の子供に li
が来れないので意味がありません。
[16]
>>6 %flow
の問題は li
などだけかと思っていましたが、それは Strict DTD での話、
Transitional 系 DTD では body
要素など色々なところで問題が起こりますね。
[10] HTML 4 によれば、 UA は変更が明らかであるように挿入をレンダリングするべきです。
たとえば、特別なフォントで表示する方法があると述べられています。
[11] 多くの視覚的 UA では、 text-decoration: underline な既定スタイルを持っています。
その他に著者のスタイルシートで広く行われている表現としては、 枠で囲ったり、背景色を変えてみたりされています。
[12] テキストブラウザの類では、 引用部の最初と最後に目印となる文字列を入れるものもあります。
[13] ins
要素型に対応していない古いブラウザでは
ins
部分と周りの部分の見分けがつかない表示になってしまうのが普通です。
(ただ、 ins
要素はその性質上、
変更点を見たい場合以外は問題にならないでしょう。)
[17]
変更後の文書を見たいときのモード (あるいは代替スタイル) では ins
は普通に表示し、 del
はまったく表示しないというのもありでしょう。
逆に、変更前を見たいモードでは
ins
は非表示で del
は普通に表示、てな具合。
[18]
datetime
属性を使っていれば、何月何日の時点での文書の状態を表示、なんてのもできそうです。
[31]
ins要素のスタイルの場合分け:メモランダム (2007-04-28 20:47:46 +09:00
版) http://mynotes.jp/blog/2007/04/ins_style2
(名無しさん 2007-04-29 02:31:57 +00:00)
[3]
逆に削除された部分をマークする del
要素型も用意されています。
XHTML 2 では汎用属性 edit
として一般化される見込みです。
[26]
リスト, 表の項目の追加:
ul
, ol
,
dl
, table
などの子供として、 li
,
dd
, tr
,
td
の親になるような
ins
要素を挟む
ことはできません。
(HTML 4 や XHTML 1.0 の仕様上の限界です。
HTML 4 DTD では ul
などの子供として ins
を使うことも可能ですが、 ins
の子供として li
などを使うことが出来ないので、意味がありません。)
(名無しさん [sage])
[8] (HTML 4 仕様書より):
<INS datetime="1994-11-05T08:15:30-05:00" cite="http://www.foo.org/mydoc/comments.html"> Furthermore, the latest figures from the marketing department suggest that such practice is on the rise. </INS>
datetime
属性は修正日時、
cite
属性は修正理由の書かれた資源を記述できます。
[9] (HTML 4 仕様書より):
<INS datetime="1994-11-05T08:15:30-05:00" title="Changed as a result of Steve B's comments in meeting."> Furthermore, the latest figures from the marketing department suggest that such practice is on the rise. </INS>
title
属性は修正理由の簡単な説明のために使うことができます。
[7] 不正な例 (HTML 4 仕様書より):
<P> <INS><DIV>...block-level content...</DIV></INS> </P>
[19] 複数の修正の重なった例:
<p> 利用者<ins class="r3">エージェント</ins>は、ここをこう<del class="r3"><del class="r2">しなければなりません</del><ins class="r2">するべきです</ins></del><ins class="r3">するように利用者を促さなければなりません</ins>。
この例では、第2版における修正を
r2
, 第3版における修正を
r3
として分類しています。
この文書のスタイル・シートは次のような感じにするとよさげです。
head
要素内で:
<link
rel
="stylesheet
"href
="document-style"> <link
rel
="alternate
stylesheet
"href
="rev1-style"title
="初版"> <link
rel
="alternate
stylesheet
"href
="rev2-style" title="第2版"> <link
rel
="stylesheet
"href
="rev3-style" title="第3版">
4種類のスタイル・シートのうち、文書全般に関するものを持続スタイルに、 残りを代替スタイルにします。 そのうち、最新の版は優先スタイルにしておきます。
CSS スタイル・シート rev1-style
の例:
ins { display: none; } del { display: inline; } body > del { display: block; }
CSS スタイル・シート rev2-style
の例:
ins { display: none; } ins.r2 { display: inline; } body > ins.r2 { display: block; } del { display: inline; } body > del { display: block; } del.r2, body > del.r2 { display: none; }
CSS スタイル・シート rev3-style
の例:
ins { display: none; } ins.r2, ins.r3 { display: inline; } body > ins.r2, body > ins.r3 { display: block; } del { display: inline; } body > del { display: block; } del.r2, body > del.r2, del.r3, body > del.r3 { display: none; }
[27] 引用者注:
<blockquote> <p>昔々、あるところに、おじいさんとおばあさんが住んでいました。</p> <ins class="引用者注"> <p>原文ではここに挿絵があります。</p> </ins> <p>おじいさんは山へ芝刈りに、おばあさんは川へ洗濯へ向かいました。</p> <ins class="snip"><p>(中略)</p></ins> <p>おじいさんとおばあさんはいつまでも幸せにくらしましたとさ。</p> </blockquote>
この例では、引用部内で (引用文献の著者ではなく)
引用者が記述した部分を明確にするためにins
要素型を用いています。
(名無しさん [sage])
[28] >>27 のような使い方は本来のsemanticsからはずれていますが、 まったく別のものともいいがたく、どうするべきか本当に悩ましい。 (名無しさん [sage])
“The decree, voted by the priests of Egypt at Memphis [WSDL WG] , is repeated in two languages— Egyptian [prose] (in both hieroglyphic and demotic scripts) and Greek [Z] —— and records the good deeds of Ptolemy and the honours proposed for the twelve year old King.
Through the Rosetta Stone and other similar bilingual inscriptions scholars [developers] were able to decipher the hieroglyphs [specs] of ancient Egypt [W3C] .”
— British Museum
[25] 元々の WinIE の実装では (HTML 3 でも??)、
ins
と del
は
em
や code
などと同じような行内要素でした。
ブロック水準要素としても使える特殊な扱いになったのは HTML 4
からです。
[36] XHTML2 の最初の作業原案には ins
要素、
del
要素も含まれていましたが、
2つ目の作業原案で削除され、代わりに edit
属性が導入されました。
[20] どんな時に ins
や del
を使うのか:
ins
要素や del
要素を使うと HTML 文書内の編集履歴を残すことができます。
しかし、 HTML 文書を編集する時に必ずこれらの要素を使ってマークしなければならないのではありません。
例えば正式
な仕様書や規則の案であるとか、
書籍の原稿を校正するとか、
あるいは一旦日付入りで公表した文書に長い時間が経過した後に状況の変化を反映した補足を付けるとか、
変更履歴をわざわざ残すことに価値があると判断できる場合にこれらの要素を使います。
[21]
不適切な例: 特に重要な文書の変更案などを除き、
単なる typo をわざわざ del
で
ins
でマークすることは意味がありません。
文書が読みづらくなるだけです。
[22]
不適切な例: 日記で、毎日追記
していくからといって、
日毎に ins
でマークするのは間違いです。
(以前の記事に後から新しい情報を補うために使うのは適当です。)
[23]
長い文書の一部が修正されている時に
次の編集箇所へ
のような機能が利用者エージェントについているとうれしいなあ。
(名無しさん)
[30] [w3m-dev 04202] Re: <del>, <s>, <ins>, and so on http://permalink.gmane.org/gmane.comp.web.w3m.devel/869 (名無しさん 2006-12-29 12:18:47 +00:00)
[32]
ins要素のよいスタイルはないものだろうか:メモランダム (2007-04-30 14:18:54 +09:00
版) http://mynotes.jp/blog/2007/04/ins_style
(名無しさん 2007-06-02 14:05:36 +00:00)
[33]
音声ブラウザと相性の良いHTMLを作る(4)。 (Junnama Online (Mirror)) (2007-06-09 22:46:02 +09:00
版) http://junnama.alfasado.net/online/2007/05/media_ins_del.html#entry-1430
(名無しさん 2007-06-09 14:38:18 +00:00)
[34]
音声ブラウザと相性の良いHTMLを作る(4)。 (Junnama Online (Mirror)) (2007-06-09 22:46:02 +09:00
版) http://junnama.alfasado.net/online/2007/05/media_ins_del.html#entry-1430
(名無しさん 2007-06-09 14:38:52 +00:00)
[35] The ins and del elements and comments thereon (Ian Hickson <ian@...> 著, 版) http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/13745 (名無しさん)
[41] <del>, <ins>, <time>, datetime (jasonkiss著, ) https://github.com/w3c/html-aam/commit/a6e206b29016668e07e5d63478413f009c92a1e6
[42] W3C mobileOK Basic Tests 1.0 () https://www.w3.org/TR/mobileOK-basic10-tests/#STYLE_SHEETS_USE