ins

ins

ins 要素型 (HTML, XHTML 1)

[1] HTMLins 要素は、 文書のある版で挿入された部分を表します。 例えば、仕様書第三次案で第二次案と比べて変更された部分を明記した時には、 追加された部分を ins タグで括ります。

[24] 仕様書:

[2]

名前空間URI
http://www.w3.org/1999/xhtml
局所名
ins (insert (挿入) より)
開始タグ
必須
終了タグ
必須
内容模型
(%flow;)* >>4
出現できる文脈
body 内ほぼどこでも >>4
属性
属性名属性値既定値説明状態出典
citeURI参照(なし)修正事由[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 は insdelbody 要素型の添加要素指定に入れています。 このように添加要素を使った DTD では、 空白SGML 的処理が他の要素とは違ってきます。詳しくは SGML//空白を参照。

[15] HTML 4 DTD では body で添加されていながらどの要素型でも除外されていないので、 DTD 的には本当にどこにでも (例えば ul 要素の直下や table 要素の直下や legend 要素の前など。ただし img のような強制空要素内は不可。) にも insdel が入って良いことになってしまいます。 仕様書でも特にそれに言及していません。 それでよいのでしょうか。

(添加要素指定を使っていない DTD、例えば XHTML 1 ではこの問題はありません。)

ul の直下などは使えて嬉しいこともありそうですが、 insdel の子供に li が来れないので意味がありません。

[16] >>6 %flow の問題は li などだけかと思っていましたが、それは Strict DTD での話、 Transitional 系 DTD では body 要素など色々なところで問題が起こりますね。

CSSdisplay を決定するような処理は不可能。

レンダリング

[10] HTML 4 によれば、 UA は変更が明らかであるように挿入をレンダリングするべきです。

たとえば、特別なフォントで表示する方法があると述べられています。

[11] 多くの視覚的 UA では、 text-decoration: underline既定スタイルを持っています。

その他に著者のスタイルシートで広く行われている表現としては、 枠で囲ったり、背景色を変えてみたりされています。

[12] テキストブラウザの類では、 引用部の最初と最後に目印となる文字列を入れるものもあります。

[13] ins 要素型に対応していない古いブラウザでは ins 部分と周りの部分の見分けがつかない表示になってしまうのが普通です。 (ただ、 ins 要素はその性質上、 変更点を見たい場合以外は問題にならないでしょう。)

[17] 変更後の文書を見たいときのモード (あるいは代替スタイル) では ins は普通に表示し、 del はまったく表示しないというのもありでしょう。 逆に、変更前を見たいモードでは ins は非表示で del は普通に表示、てな具合。

[18] datetime 属性を使っていれば、何月何日の時点での文書の状態を表示、なんてのもできそうです。

もっとも、それだけの版管理を HTML でやってる人がいるかどうか...

[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 4XHTML 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;
}

改訂が多ければ多いほど面倒になっていく・・・ように思えますけど、実際には改訂毎にコピペして新しい方のスタイル・シートに少し付け足すだけで済みます。
むしろ面倒なのは、ブロック要素の子供かどうかで blockinline か分けないといけないところ。

[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])

[29]

“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

[括弧] は引用者による挿入部で、原文では太字。

これも >>27 同様insでマークできそうです。

歴史

[25] 元々の WinIE の実装では (HTML 3 でも??)、 insdelemcode などと同じような行内要素でした。 ブロック水準要素としても使える特殊な扱いになったのは HTML 4 からです。

XHTML2

[36] XHTML2 の最初の作業原案には ins 要素del 要素も含まれていましたが、 2つ目の作業原案で削除され、代わりに edit 属性が導入されました。

HTML5

[38] ins 要素は、版 (現存せず) WA1 で追加されました。

メモ

[20] どんな時に insdel を使うのか: ins 要素や del 要素を使うと HTML 文書内の編集履歴を残すことができます。 しかし、 HTML 文書を編集する時に必ずこれらの要素を使ってマークしなければならないのではありません

例えば正式な仕様書や規則の案であるとか、 書籍の原稿を校正するとか、 あるいは一旦日付入りで公表した文書に長い時間が経過した後に状況の変化を反映した補足を付けるとか、 変更履歴をわざわざ残すことに価値があると判断できる場合にこれらの要素を使います。

[21] 不適切な例: 特に重要な文書の変更案などを除き、 単なる typo をわざわざ delinsマークすることは意味がありません。 文書が読みづらくなるだけです。

[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> (名無しさん)

メモ

[37] 今年も来年もアニメはMX! 今年もアニメ攻勢がすごいTOKYO MXの年末年始特番、そして2016年について聞いてみた!!|おたぽる ( 版) <http://otapol.jp/2015/12/post-5150.html>

<script async src="//pagead2.googlesyndication.com/pagead/js/adsbygoogle.js"></script>

<!-- otp_pc_630x280 -->

<ins class="adsbygoogle"

style="display:inline-block;width:630px;height:280px"

data-ad-client="ca-pub-8955310992046334"

data-ad-slot="9431689327"></ins>

[40] Minutes [was: Agenda for 971023 HTML WG meeting] (Dan Connolly著, ) <https://lists.w3.org/Archives/Public/w3c-wai-hc/1997OctDec/0160.html>

RESOLVED: <li> and <td>, INS DEL have to be %flow;

(i.e. (%inline;|%block)*)

[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>