曖昧アンド

文字参照 (HTML、XML、SGML)

[91] SGML 派生マーク付け言語における文字参照 (character reference) は、文字の番号や短い名前によって表す文字の代替表現です。 マーク付けの一部を表す文字データとして含めるために使ったり、 通常の方法で入力しがたい文字を表すために使ったりします。

仕様書

呼称と定義・分類

[90] HTML では、名前付き文字参照十進数文字参照十六進数文字参照の総称を文字参照と呼んでいます >>89

文脈

[92] HTML では文字参照は、 通常要素外来要素エスケープ可能生テキスト要素内容の一部として >>93、 あるいは属性値の一部として >>94 用いることができます。

[95] >>92 のいずれも文字参照の他にテキストを用いることができる文脈ですが、 曖昧アンドが禁止されています >>93, >>94文字参照にも曖昧アンドにも一致しない &テキストとして解釈され、著者はこれを用いても構いません。 曖昧アンドである &著者が用いてはなりません。

[96] 曖昧アンド (ambiguous ampersand) は、 & の後に1文字以上のASCII英数字が続き、その後に ; が続くもののうち、名前付き文字参照でないものです >>89

  1. &
  2. +
    1. ASCII英数字
  3. ;
[102] ; で終わらない (不適合の) 文字参照を禁止しないといけない気がしますが、 >>99 で禁止がなくなってしまっています。 また、正しい文字参照曖昧アンドに含まれないので、文字参照テキストとしても解釈し得る状態になっていて、厳密には不適切な状態になっています。。。

HTML 文字参照 XML DTD

[18] XML においてはいくつかの公開識別子を持つ外部実体HTML名前付き文字参照宣言するものと解釈されることになっています。

スクリプトマクロ

スクリプトマクロ

PukiWiki

[20] PukiWikiのテキスト整形のルール >>47 では、 HTML文字参照の一部と、独自の文字参照が使えるとされます。

[21] &heart;, ⌣, &t; など独自の文字参照があります。 >>47

[23] &date;, &page; など保存時メタ情報に置換される構文があります。 >>47

[24] &counter; など動的に決まる値に置き換えられる構文があります。 >>47

[25] &ruby(ルビ){インライン要素}; など引数を取る構文があります。 >>47

[26] このように SGML文字参照から大きく離れて一般の記述構文にまで拡張されています。

[47] FormattingRules - PukiWiki-official (, ) https://pukiwiki.osdn.jp/?FormattingRules#ibd49862

16進数は半角小文字で指定する必要があります(XHTML 1.0 第2版から小文字に限定されました)。

歴史

文字エスケープ拡大の諸提案

[48] SGML文字実体参照の体系が多数提案されました。 また、 SGML 以外の対象でも利用されました。

[54] HTML3, STIX, XML Entity Definitions for Characters, ERCS, KanjiBase, &M, BUCS, EKBS, テキスト形式TRONコード, CHISE文字参照, シフトJIS文字参照, MUFI, IDS (別構文あり), SAT外字

[14] IPAmj明朝フォントの研究 ― 実装編 ― - FIELD NOTES: 書を持って街へ出よう, https://field-notes.hatenablog.jp/entry/20111223/1324634005

前回の調査結果を元に Field Reports 1.4 に以下の機能を盛り込みました。

ただし,プログラミング言語によっては2バイトを超えるUnicode文字をエスケープシーケンスなどで表現できないので,数値参照文字も使えるようにしました。

&#dddd; または &#xhhhh; (ddddは10進数,hhhhは16進数)

ついでに,CIDまたはGIDで直接グリフを指定できるよう「グリフ参照文字」も使えるようにしました。

&@#dddd; または &@#xhhhh;l

文字参照を独自拡張した「グリフ名参照」により,グリフ名を指定できるようにしました。 以下のような書式になります。

&@<グリフ名>;

[19] Field Reports 1.4 の新機能 (3) ― グリフ直接指定 ― - 合同会社フィールドワークス, https://www.field-works.co.jp/2011/12/16/field-reports-1-4-%E3%81%AE%E6%96%B0%E6%A9%9F%E8%83%BD-3-%E3%82%B0%E3%83%AA%E3%83%95%E7%9B%B4%E6%8E%A5%E6%8C%87%E5%AE%9A/

曖昧アンドの縮小

[101] HTML曖昧アンドの定義は徐々に縮小していき、最終的には名前付き文字参照と同じ構文のものになっています。 言い換えると、エスケープしなくても良い & が徐々に増えていき、現在又は将来の名前付き文字参照と構文上区別可能ならすべて認められることになっています。

メモ

[9]

(275) 文字参照 (character reference)
1文字置換される参照JIS X 4151-1992 3.

[1]SGML】 SGML の文字参照には、数値指定文字参照名前指定文字参照があります。 前者は文書文字集合における文字番号を使って文字を参照します。例えば &#33 は、文字番号 33 の文字 (ISO/IEC 646:1991 IRV では !。) を表します。後者は機能文字又は SGML宣言具象構文の追加機能に指定してある文字を、その名前を使って参照します。 たとえば、 &#RE は機能文字 RE (記録終了) を表します。

Web SGML では、更に16進文字参照が追加されました。

[2] これに類したものとして、文字実体参照があります。 これは、文字1文字 (と判断されるもの。) だけの一般実体を参照するものです。例えば、 &Aacuteアキュート・アクセントつきの文字 A に置換されるかもしれません。

(ちなみに、「文字実体」・「文字実体集合」 という言葉は SGML には出てきますが、 「文字実体参照」という言葉は HTML4 で出てきます。 (という話は言葉遊びみたいなものですが。))

[3] 文字参照は、その文字が他の手段で簡便に書けない場合に限って使うことが望ましいとされています。 (JISX4151‐1992 8.5 参照。)

[7]

[6] 文字参照を使うと良い場面 (JIS 参考3 7.2 参照。) :

など。

[10] Firefox 2.0 で U+10FFFF より大きな16進数を指定すると、値によって:

U-7FFFFFFF までならサロゲート・ペアへの変換の計算を拡張したらしき2文字の列になります。

http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cbody%3E%0A%3Cp%3E%26%23x110000%3B%3C%2Fp%3E%0A%3Cscript%3E%0A%20%20var%20pv%20%3D%20document.getElementsByTagName%20('p')%5B0%5D.firstChild.data%3B%0A%20%20if%20(pv%20%3D%3D%20%22%5CuFFFD%22)%20%7B%0A%20%20%20%20document.write%20('%3Cp%20id%3Dresult%20class%3DPASS%3EPASS%3C%2Fp%3E')%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20document.write%20('%3Cp%20id%3Dresult%20class%3DFAIL%3EFAIL%20(')%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20pv.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20document.write%20(pv.charCodeAt%20(i).toString%20(16)%20%2B%20'%2C')%3B%0A%20%20%20%20%7D%0A%20%20%20%20document.write%20(')%3C%2Fp%3E')%3B%0A%20%20%7D%0A%3C%2Fscript%3E%3Cnoscript%3E%3Cp%20id%3Dtest%20class%3DFAIL%3EFAIL%20(noscript)%3C%2Fp%3E%3C%2Fnoscript%3E%0A, http://software.hixie.ch/utilities/js/live-dom-viewer/?%3Cbody%3E%0A%3Cp%3E%26%23x7fffffff%3B%3C%2Fp%3E%0A%3Cscript%3E%0A%20%20var%20pv%20%3D%20document.getElementsByTagName%20('p')%5B0%5D.firstChild.data%3B%0A%20%20if%20(pv%20%3D%3D%20%22%5CuFFFD%22)%20%7B%0A%20%20%20%20document.write%20('%3Cp%20id%3Dresult%20class%3DPASS%3EPASS%3C%2Fp%3E')%3B%0A%20%20%7D%20else%20%7B%0A%20%20%20%20document.write%20('%3Cp%20id%3Dresult%20class%3DFAIL%3EFAIL%20(')%3B%0A%20%20%20%20for%20(var%20i%20%3D%200%3B%20i%20%3C%20pv.length%3B%20i%2B%2B)%20%7B%0A%20%20%20%20%20%20document.write%20(pv.charCodeAt%20(i).toString%20(16)%20%2B%20'%2C')%3B%0A%20%20%20%20%7D%0A%20%20%20%20document.write%20(')%3C%2Fp%3E')%3B%0A%20%20%7D%0A%3C%2Fscript%3E%3Cnoscript%3E%3Cp%20id%3Dtest%20class%3DFAIL%3EFAIL%20(noscript)%3C%2Fp%3E%3C%2Fnoscript%3E%0A

0x800000000xFFFFFFFF だと、 & を除く文字列がそのまま文字データとして解釈されます。

0x100000000 以上だと、下位8桁 (32ビット) 以外は無視されます。

[11] >>10 WinIE 6 ではすべて U+003F になるようです。

[12] >>10 Opera 9 は:

U-001100000xFFFFFFFFサロゲート・ペア風のなにか (Firefox とは違います。) になります。

0xFFFFFFFF 以上は 0xFFFFFFFF と同じ結果になります。 (名無しさん)

[13] >>10-12 いずれも文字長の制限はないように見えます。 (名無しさん)

[15] Bug 4948 - Incorrect HTML entity error recovery doesn't match other browsers ( 版) https://bugs.webkit.org/show_bug.cgi?id=4948

[63] MAMA: Character entities - Opera Developer Community ( 版) http://dev.opera.com/articles/view/mama-character-entities/

[64] Business::PayPal::API - PayPal API - search.cpan.org ( 版) http://search.cpan.org/~scottw/Business-PayPal-API-0.62/lib/Business/PayPal/API.pm#PayPal_Munging_URLs

[66] Bug 9207 – Anything else: This part of the spec is problematic, for example, a query string variable &lang_id=1 in as part of an attribute of say an img tag, will get converted into an character token when it shouldn't be. Why is the set of characters a-z, A-Z, 0- ( 版) http://www.w3.org/Bugs/Public/show_bug.cgi

[67] HTML5 Revision Tracker ( 版) http://html5.org/tools/web-apps-tracker?from=4958&to=4959

[69] IRC logs: freenode / #whatwg / 20100403 ( 版) http://krijnhoetmer.nl/irc-logs/whatwg/20100403#l-73

[70] Bug 10067 – this only lists entities whose replacement text is a single character, for example many of the negated operators, for example ( ( 版)) http://www.w3.org/Bugs/Public/show_bug.cgi?id=10067

[71] IRC logs: freenode / #whatwg / 20100927 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20100927

[72] XQuery 1.0: An XML Query Language (Second Edition) ( ( 版)) http://www.w3.org/TR/2010/REC-xquery-20101214/#dt-predefined-entity-reference

[73] XQuery 1.0: An XML Query Language (Second Edition) ( ( 版)) http://www.w3.org/TR/2010/REC-xquery-20101214/#dt-character-reference

[74] IRC logs: freenode / #whatwg / 20120525 ( ( 版)) http://krijnhoetmer.nl/irc-logs/whatwg/20120525#l-480

[75] Web Applications 1.0 r7133 Add a JSON file for entities for convenience. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7132&to=7133

[78] Additional named entities for HTML ( ( 版)) http://www.w3.org/TR/WD-entities-961125

[79] Web Applications 1.0 r7679 Make <a href='?guitar=2&amp=1&pedal=6'> a parse error since IE9 misparses it '?guitar=2&=1&pedal=6' apparently. ( ( 版)) http://html5.org/tools/web-apps-tracker?from=7678&to=7679

[83] Help:Formatting - MediaWiki ( ( 版)) http://www.mediawiki.org/wiki/Help:Formatting#Inserting_symbols

[88] XQuery 3.0: An XML Query Language ( ( 版)) http://www.w3.org/TR/xquery-30/#dt-character-reference

[86] ncsa-mosaic/CHANGES at master · alandipert/ncsa-mosaic ( ( 版)) https://github.com/alandipert/ncsa-mosaic/blob/master/CHANGES#L1310

[84] XML Entity Definitions for Characters (2nd Edition) ( ( 版)) http://www.w3.org/TR/2014/PER-xml-entity-names-20140211/

[104] Bug 13108 – Add &zwsp; as named character reference for zero width space (U+200B) ( ( 版)) https://www.w3.org/Bugs/Public/show_bug.cgi?id=13108

[105] Re: [whatwg] several messages about the HTML syntax ( (fantasai 著, 版)) http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Jul/0132.html

[106] [whatwg] Markup-related feedback ( (Ian Hickson 著, 版)) http://lists.w3.org/Archives/Public/public-whatwg-archive/2014Oct/0239.html

[107] abc:standard:v2.1 [abc wiki] ( ( 版)) http://abcnotation.com/wiki/abc:standard:v2.1#supported_accents_ligatures

[16] XHTMLBasic変換仕様 | Durianマニュアル ( 版) http://durian.symmetric.jp/dev/doc/technical/xhtmlbasic_conversion.html

書式 *****で指定可能な記述 説明

&i-mode_*****; 63647から63919 DoCoMo基本絵文字のShift_JISコード

&i-mode-ex_*****; 63921から63996 DoCoMo拡張絵文字のShift_JISコード

&i-mode_U*****; Unicode DoCoMo用絵文字のUnicode

&YahooKeitai-C_*****; [ページ番号1文字]-[ページ内のコード2文字] SoftBankC型端末用絵文字

&YahooKeitai-P_*****; [ページ番号1文字]-[ページ内のコード2文字] SoftBankP型端末用絵文字

&YahooKeitai_U*****; Unicode SoftBank用絵文字のUnicode

&ezweb-1_*****; アイコン番号またはアイコン名 au cdmaOne300シリーズ、Tu-Ka0Xシリーズ、白黒端末用絵文字

&ezweb-2_*****; アイコン番号またはアイコン名 au cdmaOne400シリーズ、Tu-Ka1Xシリーズ用絵文字

&ezweb-3_*****; アイコン番号またはアイコン名 au cdmaOne1000/3000シリーズ、Tu-Ka2Xシリーズ、Tu-Ka3Xシリーズ用絵文字

&ezweb-4_*****; アイコン番号またはアイコン名 au cdmaOne5000シリーズ、WINシリーズ、Tu-Ka4Xシリーズ、Tu-Ka5Xシリーズ用絵文字

&ezweb_U*****; Unicode au用絵文字のUnicode

[17] XHTMLBasic変換仕様 | Durianマニュアル ( 版) http://durian.symmetric.jp/dev/doc/technical/xhtmlbasic_conversion.html

XHTMLBasicの仕様では規定されていない絵文字および入力モードについては、Durianにより拡張された構文を使用します。構文の詳細については、開発リファレンスを参照してください。

機能 表記方法

絵文字 &i-mode_63647; や &YahooKeitai-C1-21; のようなエンティティ参照

入力モード inputまたはtextarea要素のtext:type属性で、text:type="hiragana"のように指定

[22] 俗に、文字参照のことをエスケープシーケンスと呼ぶことがあります。

[30] RFC 7749 - The "xml2rfc" Version 2 Vocabulary ( 版) https://tools.ietf.org/html/rfc7749#section-4

<!ENTITY nbsp "&#xa0;">

<!ENTITY nbhy "&#x2011;">

<!ENTITY wj "&#x2060;">

[31] entries for 1EEF0 and 1EEF1 to match unicode-math · w3c/xml-entities@891fe64 ( 版) https://github.com/w3c/xml-entities/commit/891fe64c7591a75c8f2ad42f9ff0fb93b5b8ef74

[32] Formalize character reference states ( (RReverser著, )) https://github.com/whatwg/html/commit/6c629ac9e5736cdb824293999673de6a0f5ea06d

[34] Fix wording mistake in parsing a character reference ( (zcorpan著, )) https://github.com/whatwg/html/commit/918a56e5d1e9e86695770bf10c1893dd7bae6946

[35] JIS X 0218文字参照のために制定されたのでしょうか。

[36] XQuery 3.1: An XML Query Language () https://www.w3.org/TR/2017/REC-xquery-31-20170321/#dt-character-reference

[37] Regression fix: deal with ASCII digits before ASCII hex digits (annevk著, ) https://github.com/whatwg/html/commit/f8e75a974ed9185e5b462bc5b2dfb32034bd1145

[38] 文字の制限 () http://www.pcinfo.jpo.go.jp/guide/Content/Rules/MojiSeigen.htm

[39] Editorial: Introduce named character reference state (inikulin著, ) https://github.com/whatwg/html/commit/7d3201282d31c30cdba2583445d3727a94390286

[40] Clarify that 0x0D CR is not allowed in entities (Alcaro著, ) https://github.com/whatwg/html/commit/efcf0af907c13343d898bf47b5ab004ed59724dd

[41] Clarify that 0x0D CR is not allowed in entities by Alcaro · Pull Request #2893 · whatwg/html () https://github.com/whatwg/html/pull/2893

[42] Handle ambiguous ampersands of arbitrary length (inikulin著, ) https://github.com/whatwg/html/commit/ee198945e388bd3298b73fb842fa0175d5b6a0f9

[43] [Parser] Handle ambiguous ampersands of arbitrary length (closes #1257) by inikulin · Pull Request #2731 · whatwg/html () https://github.com/whatwg/html/pull/2731

[44] Regression fix: Lost ampersands in Character Reference State's Anythi… (JonathanO著, ) https://github.com/whatwg/html/commit/8d2875784cd4684fd85f4421a1d173902d0e1760

[45] Fix lost ampersands in Character Reference State's Anything Else case. by JonathanO · Pull Request #2913 · whatwg/html () https://github.com/whatwg/html/pull/2913

[46] XML Character Entities () http://www.oasis-open.org/docbook/specs/wd-docbook-xmlcharent-0.3.html

[49] https://ipsj.ixsq.nii.ac.jp/ej/?action=repository_action_common_download&item_id=100462&item_no=1&attribute_id=1&file_no=1

[50] >>49 外字XML実体参照で記述して、 マーク付き区間によりPUA代替表記か切り替えられる。