| 1 |
#pattern
|
| 2 |
<span class=secno>* </span>Common microsyntaxes
|
| 3 |
#ja
|
| 4 |
<span class=secno>$1 </span>共通マイクロ構文
|
| 5 |
|
| 6 |
#en
|
| 7 |
There are various places in HTML that accept particular data types, such
|
| 8 |
as dates or numbers. This section describes what the conformance criteria
|
| 9 |
for content in those formats is, and how to parse them.
|
| 10 |
#ja
|
| 11 |
HTML 中のいろいろな場所で、日付や数値のような特定のデータ型を使うことができます。
|
| 12 |
この節では、そのような書式の内容の適合基準は何か、
|
| 13 |
どう構文解析するかを説明します。
|
| 14 |
|
| 15 |
#en
|
| 16 |
Need to go through the whole spec and make sure all the
|
| 17 |
attribute values are clearly defined either in terms of microsyntaxes or
|
| 18 |
in terms of other specs, or as "Text" or some such.
|
| 19 |
#ja
|
| 20 |
仕様書全体について、すべての属性値がマイクロ構文を使ってか他の仕様書を使ってか「文章」などとして定義されるようにする必要があります。
|
| 21 |
|
| 22 |
#pattern
|
| 23 |
<span class=secno>* </span>Common parser idioms
|
| 24 |
#ja
|
| 25 |
<span class=secno>$1 </span>構文解析器共通慣用句
|
| 26 |
|
| 27 |
#en
|
| 28 |
The <dfn id=space title="space character">space characters</dfn>, for
|
| 29 |
the purposes of this specification, are U+0020 SPACE, U+0009 CHARACTER
|
| 30 |
TABULATION (tab), U+000A LINE FEED (LF), U+000C FORM FEED (FF), and U+000D
|
| 31 |
CARRIAGE RETURN (CR).
|
| 32 |
#ja
|
| 33 |
<dfn id=space title="space character">間隔文字</dfn>は、
|
| 34 |
この仕様書においては、 U+0020 SPACE, U+0009 CHARACTER
|
| 35 |
TABULATION (tab)、U+000A LINE FEED (LF)、U+000C FORM FEED (FF)、 U+000D
|
| 36 |
CARRIAGE RETURN (CR) です。
|
| 37 |
|
| 38 |
#en
|
| 39 |
Some of the micro-parsers described below follow the pattern of having
|
| 40 |
an <var title="">input</var> variable that holds the string being parsed,
|
| 41 |
and having a <var title="">position</var> variable pointing at the next
|
| 42 |
character to parse in <var title="">input</var>.
|
| 43 |
#ja
|
| 44 |
これ以降で説明するマイクロ構文解析器のいくつかは、構文解析される文字列を保持する
|
| 45 |
<var title="">input</var> 変数を持ち、 <var title="">input</var>
|
| 46 |
中で次に構文解析する文字を指す <var title="">position</var>
|
| 47 |
変数を持つというパターンに従っています。
|
| 48 |
|
| 49 |
#en
|
| 50 |
For parsers based on this pattern, a step that requires the user agent
|
| 51 |
to <dfn id=collect>collect a sequence of characters</dfn> means that the
|
| 52 |
following algorithm must be run, with <var title="">characters</var> being
|
| 53 |
the set of characters that can be collected:
|
| 54 |
#ja
|
| 55 |
このパターンに従う構文解析器において、利用者エージェントが<dfn id=collect>文字列を集める</dfn>ことを要求している段階は、
|
| 56 |
次の算法を、 <var title="">characters</var>
|
| 57 |
が収集できる文字の集合であるとして実行しなければ[[MUST:ならない]]ことを意味しています。
|
| 58 |
|
| 59 |
#en
|
| 60 |
Let <var title="">input</var> and <var title="">position</var> be the
|
| 61 |
same variables as those of the same name in the algorithm that invoked
|
| 62 |
these steps.
|
| 63 |
#ja
|
| 64 |
<var title="">input</var> と <var title="">position</var>
|
| 65 |
を、これらの段階を呼び出した算法中の同名の変数と同じものとします。
|
| 66 |
|
| 67 |
#en
|
| 68 |
Let <var title="">result</var> be the empty string.
|
| 69 |
#ja
|
| 70 |
<var title="">result</var> を空文字列とします。
|
| 71 |
|
| 72 |
#en
|
| 73 |
While <var title="">position</var> doesn't point past the end of <var
|
| 74 |
title="">input</var> and the character at <var title="">position</var>
|
| 75 |
is one of the <var title="">characters</var>, append that character to
|
| 76 |
the end of <var title="">result</var> and advance <var
|
| 77 |
title="">position</var> to the next character in <var
|
| 78 |
title="">input</var>.
|
| 79 |
#ja
|
| 80 |
<var title="">position</var> が <var
|
| 81 |
title="">input</var> の終わりの更に先を指しておらず、 <var title="">position</var>
|
| 82 |
の文字が <var title="">characters</var> のうちの1つである間、
|
| 83 |
その文字を <var title="">result</var> の終わりに追加し、 <var
|
| 84 |
title="">position</var> を <var
|
| 85 |
title="">input</var> の次の文字に進めます。
|
| 86 |
|
| 87 |
#en
|
| 88 |
Return <var title="">result</var>.
|
| 89 |
#ja
|
| 90 |
<var title="">result</var> を返します。
|
| 91 |
|
| 92 |
#en
|
| 93 |
The step <dfn id=skip-whitespace>skip whitespace</dfn> means that the
|
| 94 |
user agent must <a href="#collect">collect a sequence of characters</a>
|
| 95 |
that are <a href="#space" title="space character">space characters</a>.
|
| 96 |
The step <dfn id=skip->skip Zs characters</dfn> means that the user agent
|
| 97 |
must <a href="#collect">collect a sequence of characters</a> that are in
|
| 98 |
the Unicode character class Zs. In both cases, the collected characters
|
| 99 |
are not used. <a href="#refsUNICODE">[UNICODE]</a>
|
| 100 |
#ja
|
| 101 |
<dfn id=skip-whitespace>空白を飛ばす</dfn>段階は、
|
| 102 |
利用者エージェントが<a href="#space" title="space character">間隔文字</a>である<a href="#collect">文字列を集め</a>なければ[[MUST:ならない]]ことを意味します。
|
| 103 |
<dfn id=skip->Zs 文字を飛ばす</dfn>段階は、
|
| 104 |
利用者エージェントが Unicode 文字クラス Zs に含まれる<a href="#collect">文字列を集め</a>なければ[[MUST:ならない]]ことを意味します。<a href="#collect">文字列を集め</a>なければ[[MUST:ならない]]ことを意味します。
|
| 105 |
どちらの場合も、集めた文字は使いません。 <a href="#refsUNICODE">[UNICODE]</a>
|
| 106 |
|
| 107 |
#pattern
|
| 108 |
<span class=secno>* </span>Boolean attributes
|
| 109 |
#ja
|
| 110 |
<span class=secno>$1 </span>ブール型属性
|
| 111 |
|
| 112 |
#en
|
| 113 |
A number of attributes in HTML5 are <dfn id=boolean0 title="boolean
|
| 114 |
attribute">boolean attributes</dfn>. The presence of a boolean attribute
|
| 115 |
on an element represents the true value, and the absence of the attribute
|
| 116 |
represents the false value.
|
| 117 |
#ja
|
| 118 |
HTML5 の数々の属性は<dfn id=boolean0 title="boolean
|
| 119 |
attribute">ブール型属性</dfn>です。要素にブール型属性が存在すると真の値を表し、
|
| 120 |
存在しないと偽の値を表します。
|
| 121 |
|
| 122 |
#en
|
| 123 |
If the attribute is present, its value must either be the empty string
|
| 124 |
or a value that is an <a href="#ascii">ASCII case-insensitive</a> match
|
| 125 |
for the attribute's canonical name, with no leading or trailing
|
| 126 |
whitespace.
|
| 127 |
#ja
|
| 128 |
属性が存在する場合、その値は空文字列か、または
|
| 129 |
<a href="#ascii">ASCII 大文字・小文字不区別</a>で属性の正準名と一致するような
|
| 130 |
(先頭にも末尾にも空白がない) 値のいずれかでなければ[[MUST:なりません]]。
|
| 131 |
|
| 132 |
#pattern
|
| 133 |
<span class=secno>* </span>Numbers
|
| 134 |
#ja
|
| 135 |
<span class=secno>$1 </span>数値
|
| 136 |
|
| 137 |
#pattern
|
| 138 |
<span class=secno>* </span>Unsigned integers
|
| 139 |
#ja
|
| 140 |
<span class=secno>$1 </span>符号無し整数
|
| 141 |
|
| 142 |
#en
|
| 143 |
A string is a <dfn id=valid>valid non-negative integer</dfn> if it
|
| 144 |
consists of one of more characters in the range U+0030 DIGIT ZERO (0) to
|
| 145 |
U+0039 DIGIT NINE (9).
|
| 146 |
#ja
|
| 147 |
文字列は、範囲 U+0030 DIGIT ZERO (0) ~ U+0039 DIGIT NINE (9)
|
| 148 |
の文字1文字以上で構成される場合、<dfn id=valid>妥当な非負整数</dfn>です。
|
| 149 |
|
| 150 |
#en
|
| 151 |
The <dfn id=rules>rules for parsing non-negative integers</dfn> are as
|
| 152 |
given in the following algorithm. When invoked, the steps must be followed
|
| 153 |
in the order given, aborting at the first step that returns a value. This
|
| 154 |
algorithm will either return zero, a positive integer, or an error.
|
| 155 |
Leading spaces are ignored. Trailing spaces and indeed any trailing
|
| 156 |
garbage characters are ignored.
|
| 157 |
#ja
|
| 158 |
<dfn id=rules>非負整数を構文解析する規則</dfn>は次の算法で与えられるものです。
|
| 159 |
この算法が呼び出された時には、与えられた順に段階に従い、
|
| 160 |
値を返す最初の段階で中断しなければ[[MUST:なりません]]。
|
| 161 |
この算法は零か正整数か誤りを返します。
|
| 162 |
先頭の間隔は無視されます。末尾の空白、というかごみ文字列はすべて無視されます。
|
| 163 |
|
| 164 |
#en
|
| 165 |
Let <var title="">input</var> be the string being parsed.
|
| 166 |
#ja
|
| 167 |
<var title="">input</var> を構文解析される文字列とします。
|
| 168 |
|
| 169 |
#en
|
| 170 |
Let <var title="">position</var> be a pointer into <var
|
| 171 |
title="">input</var>, initially pointing at the start of the string.
|
| 172 |
#ja
|
| 173 |
<var title="">position</var> を <var
|
| 174 |
title="">input</var> 中の指示子とし、初期位置を文字列の始めとします。
|
| 175 |
|
| 176 |
#en
|
| 177 |
Let <var title="">value</var> have the value 0.
|
| 178 |
#ja
|
| 179 |
<var title="">value</var> を値 0 にします。
|
| 180 |
|
| 181 |
#en
|
| 182 |
<a href="#skip-whitespace">Skip whitespace</a>.
|
| 183 |
#ja
|
| 184 |
<a href="#skip-whitespace">空白を読み飛ばします</a>。
|
| 185 |
|
| 186 |
#en
|
| 187 |
If <var title="">position</var> is past the end of <var
|
| 188 |
title="">input</var>, return an error.
|
| 189 |
#ja
|
| 190 |
<var title="">position</var> が <var
|
| 191 |
title="">input</var> の終わりを過ぎていれば、誤りを返します。
|
| 192 |
|
| 193 |
#en
|
| 194 |
If the next character is not one of U+0030 DIGIT ZERO (0) .. U+0039
|
| 195 |
DIGIT NINE (9), then return an error.
|
| 196 |
#ja
|
| 197 |
次の文字が U+0030 DIGIT ZERO (0) 〜 U+0039
|
| 198 |
DIGIT NINE (9) のうちの1つでない場合、誤りを返します。
|
| 199 |
|
| 200 |
#en
|
| 201 |
If the next character is one of U+0030 DIGIT ZERO (0) .. U+0039 DIGIT
|
| 202 |
NINE (9):
|
| 203 |
#ja
|
| 204 |
次の文字が U+0030 DIGIT ZERO (0) 〜 U+0039
|
| 205 |
DIGIT NINE (9) のうちの1つである場合:
|
| 206 |
|
| 207 |
#en
|
| 208 |
Multiply <var title="">value</var> by ten.
|
| 209 |
#ja
|
| 210 |
<var title="">value</var> を10倍します。
|
| 211 |
|
| 212 |
#en
|
| 213 |
Add the value of the current character (0..9) to <var
|
| 214 |
title="">value</var>.
|
| 215 |
#ja
|
| 216 |
現在の文字の値 (0〜9) を <var
|
| 217 |
title="">value</var> に加えます。
|
| 218 |
|
| 219 |
#en
|
| 220 |
Advance <var title="">position</var> to the next character.
|
| 221 |
#ja
|
| 222 |
<var title="">position</var> を次の文字に進めます。
|
| 223 |
|
| 224 |
#pattern
|
| 225 |
If <var title="">position</var> is not past the end of <var
|
| 226 |
title="">input</var>, return to the top of step * in the overall
|
| 227 |
algorithm (that's the step within which these substeps find
|
| 228 |
themselves).
|
| 229 |
#ja
|
| 230 |
<var title="">position</var> が <var
|
| 231 |
title="">input</var> の終わりを過ぎていなければ、
|
| 232 |
算法全体の段階 $1 (これらの部分段階自体が含まれている段階) の先頭に返ります。
|
| 233 |
|
| 234 |
#en
|
| 235 |
Return <var title="">value</var>.
|
| 236 |
#ja
|
| 237 |
<var title="">value</var> を返します。
|
| 238 |
|
| 239 |
#pattern
|
| 240 |
<span class=secno>* </span>Signed integers
|
| 241 |
#ja
|
| 242 |
<span class=secno>$1 </span>符号付き整数
|
| 243 |
|
| 244 |
#en
|
| 245 |
A string is a <dfn id=valid0>valid integer</dfn> if it consists of one
|
| 246 |
of more characters in the range U+0030 DIGIT ZERO (0) to U+0039 DIGIT NINE
|
| 247 |
(9), optionally prefixed with a U+002D HYPHEN-MINUS ("-") character.
|
| 248 |
#ja
|
| 249 |
文字列は、範囲 U+0030 DIGIT ZERO (0) ~ U+0039 DIGIT NINE
|
| 250 |
(9) の文字1文字以上で構成され、任意選択で接頭辞として U+002D HYPHEN-MINUS ("-")
|
| 251 |
文字がある場合、<dfn id=valid0>妥当な整数</dfn>です。
|
| 252 |
|
| 253 |
#en
|
| 254 |
The <dfn id=rules0>rules for parsing integers</dfn> are similar to the
|
| 255 |
rules for non-negative integers, and are as given in the following
|
| 256 |
algorithm. When invoked, the steps must be followed in the order given,
|
| 257 |
aborting at the first step that returns a value. This algorithm will
|
| 258 |
either return an integer or an error. Leading spaces are ignored. Trailing
|
| 259 |
spaces and trailing garbage characters are ignored.
|
| 260 |
#ja
|
| 261 |
<dfn id=rules0>整数を構文解析する規則</dfn>は、非負整数用の規則と似ており、
|
| 262 |
次の算法により与えられます。これらの段階は、呼び出された場合、
|
| 263 |
与えられた順序に従い実行し、初めて値を返す段階で停止しなければ[[MUST:なりません]]。
|
| 264 |
この算法は整数か誤りのいずれかを返します。先頭の間隔は無視されます。
|
| 265 |
末尾の間隔や末尾のごみ文字は無視されます。
|
| 266 |
|
| 267 |
#en
|
| 268 |
Let <var title="">sign</var> have the value "positive".
|
| 269 |
#ja
|
| 270 |
<var title="">sign</var> を、「正」という値を持つようにします。
|
| 271 |
|
| 272 |
#en
|
| 273 |
If the character indicated by <var title="">position</var> (the first
|
| 274 |
character) is a U+002D HYPHEN-MINUS ("-") character:
|
| 275 |
#ja
|
| 276 |
<var title="">position</var> が示す文字 (最初の文字)
|
| 277 |
が U+002D HYPHEN-MINUS ("-") 文字である場合、
|
| 278 |
|
| 279 |
#en
|
| 280 |
Let <var title="">sign</var> be "negative".
|
| 281 |
#ja
|
| 282 |
<var title="">sign</var> を「負」とします。
|
| 283 |
|
| 284 |
#en
|
| 285 |
If <var title="">sign</var> is "positive", return <var
|
| 286 |
title="">value</var>, otherwise return 0-<var title="">value</var>.
|
| 287 |
#ja
|
| 288 |
<var title="">sign</var> が「正」の場合、 <var
|
| 289 |
title="">value</var> を返します。そうでない場合、
|
| 290 |
0-<var title="">value</var> を返します。
|
| 291 |
|
| 292 |
#pattern
|
| 293 |
<span class=secno>* </span>Real numbers
|
| 294 |
#ja
|
| 295 |
<span class=secno>$1 </span>実数
|
| 296 |
|
| 297 |
#en
|
| 298 |
A string is a <dfn id=valid1>valid floating point number</dfn> if it
|
| 299 |
consists of one of more characters in the range U+0030 DIGIT ZERO (0) to
|
| 300 |
U+0039 DIGIT NINE (9), optionally with a single U+002E FULL STOP (".")
|
| 301 |
character somewhere (either before these numbers, in between two numbers,
|
| 302 |
or after the numbers), all optionally prefixed with a U+002D HYPHEN-MINUS
|
| 303 |
("-") character.
|
| 304 |
#ja
|
| 305 |
文字列は、範囲 U+0030 DIGIT ZERO (0) ~
|
| 306 |
U+0039 DIGIT NINE (9) の文字1文字以上で構成され、
|
| 307 |
任意選択で U+002E FULL STOP (".") 文字1文字がどこか (数字の前か、
|
| 308 |
2つの数字の間か、数字の後のいずれか) を含み、その全体について任意選択で接頭辞として
|
| 309 |
U+002D HYPHEN-MINUS ("-") 文字がある場合、<dfn id=valid1>妥当な浮動小数点数</dfn>です。
|
| 310 |
|
| 311 |
#en
|
| 312 |
The <dfn id=rules1>rules for parsing floating point number values</dfn>
|
| 313 |
are as given in the following algorithm. As with the previous algorithms,
|
| 314 |
when this one is invoked, the steps must be followed in the order given,
|
| 315 |
aborting at the first step that returns a value. This algorithm will
|
| 316 |
either return a number or an error. Leading spaces are ignored. Trailing
|
| 317 |
spaces and garbage characters are ignored.
|
| 318 |
#ja
|
| 319 |
<dfn id=rules1>浮動小数点数値を構文解析する規則</dfn>は次の算法により与えられる通りです。
|
| 320 |
前述の算法と同様で、この算法が呼び出された時も、
|
| 321 |
与えられた順序に従い実行し、値を返す最初の段階で停止しなければ[[MUST:なりません]]。
|
| 322 |
この算法は、数か誤りのいずれかを返します。先頭の間隔は無視されます。
|
| 323 |
末尾の間隔とごみ文字は無視されます。
|
| 324 |
|
| 325 |
#en
|
| 326 |
If the next character is not one of U+0030 DIGIT ZERO (0) .. U+0039
|
| 327 |
DIGIT NINE (9) or U+002E FULL STOP ("."), then return an error.
|
| 328 |
#ja
|
| 329 |
次の文字が U+0030 DIGIT ZERO (0) ~ U+0039
|
| 330 |
DIGIT NINE (9) か U+002E FULL STOP (".") のいずれかでなければ、
|
| 331 |
誤りを返します。
|
| 332 |
|
| 333 |
#en
|
| 334 |
If the next character is U+002E FULL STOP ("."), but either that is
|
| 335 |
the last character or the character after that one is not one of U+0030
|
| 336 |
DIGIT ZERO (0) .. U+0039 DIGIT NINE (9), then return an error.
|
| 337 |
#ja
|
| 338 |
次の文字が U+002E FULL STOP (".") でありながら、
|
| 339 |
これが最後の文字であるか、またはその次の文字が U+0030
|
| 340 |
DIGIT ZERO (0) ~ U+0039 DIGIT NINE (9) のいずれかではない場合、
|
| 341 |
誤りを返します。
|
| 342 |
|
| 343 |
#en
|
| 344 |
If <var title="">position</var> is past the end of <var
|
| 345 |
title="">input</var>, then if <var title="">sign</var> is "positive",
|
| 346 |
return <var title="">value</var>, otherwise return 0-<var
|
| 347 |
title="">value</var>.
|
| 348 |
#ja
|
| 349 |
<var title="">position</var> が <var
|
| 350 |
title="">input</var> の終わりを過ぎている場合には、
|
| 351 |
<var title="">sign</var> が「正」であるなら <var title="">value</var>
|
| 352 |
を返し、そうでないなら 0-<var
|
| 353 |
title="">value</var> を返します。
|
| 354 |
|
| 355 |
#en
|
| 356 |
Otherwise return to the top of step 10 in the overall algorithm
|
| 357 |
(that's the step within which these substeps find themselves).
|
| 358 |
#ja
|
| 359 |
そうでない場合、全体の算法の段階 10 (これら部分段階が含まれている段階)
|
| 360 |
の先頭に戻ります。
|
| 361 |
|
| 362 |
#en
|
| 363 |
Otherwise, if the next character is not a U+002E FULL STOP ("."), then
|
| 364 |
if <var title="">sign</var> is "positive", return <var
|
| 365 |
title="">value</var>, otherwise return 0-<var title="">value</var>.
|
| 366 |
#ja
|
| 367 |
そうでない場合、次の文字が U+002E FULL STOP (".") でない場合には、
|
| 368 |
<var title="">sign</var> が「正」であるなら <var title="">value</var>
|
| 369 |
を返し、そうでないなら 0-<var
|
| 370 |
title="">value</var> を返します。
|
| 371 |
|
| 372 |
#en
|
| 373 |
The next character is a U+002E FULL STOP ("."). Advance <var
|
| 374 |
title="">position</var> to the character after that.
|
| 375 |
#ja
|
| 376 |
次の文字は U+002E FULL STOP (".") です。 <var
|
| 377 |
title="">position</var> をその次の文字に進めます。
|
| 378 |
|
| 379 |
#en
|
| 380 |
Let <var title="">divisor</var> be 1.
|
| 381 |
#ja
|
| 382 |
<var title="">divisor</var> を 1 とします。
|
| 383 |
|
| 384 |
#en
|
| 385 |
Multiply <var title="">divisor</var> by ten.
|
| 386 |
#ja
|
| 387 |
<var title="">divisor</var> に 10 を掛けます。
|
| 388 |
|
| 389 |
#en
|
| 390 |
Add the value of the current character (0..9) divided by <var
|
| 391 |
title="">divisor</var>, to <var title="">value</var>.
|
| 392 |
#ja
|
| 393 |
現在の文字の値 (0~9) を <var
|
| 394 |
title="">divisor</var> で割った値を、<var title="">value</var>
|
| 395 |
に加えます。
|
| 396 |
|
| 397 |
#en
|
| 398 |
Otherwise return to the top of step 14 in the overall algorithm
|
| 399 |
(that's the step within which these substeps find themselves).
|
| 400 |
#ja
|
| 401 |
そうでない場合、全体の算法の段階 14 (これら部分段階が含まれている段階) の先頭に戻ります。
|
| 402 |
|
| 403 |
#en
|
| 404 |
Otherwise, if <var title="">sign</var> is "positive", return <var
|
| 405 |
title="">value</var>, otherwise return 0-<var title="">value</var>.
|
| 406 |
#ja
|
| 407 |
そうでない場合、
|
| 408 |
<var title="">sign</var> が「正」であるなら <var title="">value</var>
|
| 409 |
を返し、そうでないなら 0-<var
|
| 410 |
title="">value</var> を返します。
|
| 411 |
|
| 412 |
#pattern
|
| 413 |
<span class=secno>* </span>Ratios
|
| 414 |
#ja
|
| 415 |
<span class=secno>$1 </span>比率
|
| 416 |
|
| 417 |
#en
|
| 418 |
The algorithms described in this section are used by the
|
| 419 |
<code><a href="#progress">progress</a></code> and <code><a
|
| 420 |
href="#meter">meter</a></code> elements.
|
| 421 |
#ja
|
| 422 |
この節で説明する算法は、 <code><a href="#progress">progress</a></code> 要素と
|
| 423 |
<code><a
|
| 424 |
href="#meter">meter</a></code> 要素で使います。
|
| 425 |
|
| 426 |
#en
|
| 427 |
A <dfn id=valid2>valid denominator punctuation character</dfn> is one of
|
| 428 |
the characters from the table below. There is <dfn id=a-value
|
| 429 |
title="values associated with denominator punctuation characters">a value
|
| 430 |
associated with each denominator punctuation character</dfn>, as shown in
|
| 431 |
the table below.
|
| 432 |
#ja
|
| 433 |
<dfn id=valid2>妥当な分母句読点文字</dfn>は、
|
| 434 |
次の表の文字のいずれかです。次の表に示すように、<dfn id=a-value
|
| 435 |
title="values associated with denominator punctuation characters">各分母句読点文字には関連付けられた値</dfn>があります。
|
| 436 |
|
| 437 |
#en
|
| 438 |
Denominator Punctuation Character
|
| 439 |
#ja
|
| 440 |
分母句読点文字
|
| 441 |
|
| 442 |
#en
|
| 443 |
Value
|
| 444 |
#ja
|
| 445 |
値
|
| 446 |
|
| 447 |
#en
|
| 448 |
The <dfn id=steps>steps for finding one or two numbers of a ratio in a
|
| 449 |
string</dfn> are as follows:
|
| 450 |
#ja
|
| 451 |
<dfn id=steps>文字列中の比率の1つか2つの数字を探す段階</dfn>は、次の通りです。
|
| 452 |
|
| 453 |
#en
|
| 454 |
If the string is empty, then return nothing and abort these steps.
|
| 455 |
#ja
|
| 456 |
文字列が空である場合、何も返さず、これらの段階を停止します。
|
| 457 |
|
| 458 |
#en
|
| 459 |
<a href="#find-a">Find a number</a> in the string according to the
|
| 460 |
algorithm below, starting at the start of the string.
|
| 461 |
#ja
|
| 462 |
後述の算法に従い、文字列のはじめから開始して<a href="#find-a">数を探します</a>。
|
| 463 |
|
| 464 |
#en
|
| 465 |
If the sub-algorithm in step 2 returned nothing or returned an error
|
| 466 |
condition, return nothing and abort these steps.
|
| 467 |
#ja
|
| 468 |
段階 2 の部分算法が何も返さなかったか、誤り条件を返した場合には、
|
| 469 |
何も返さず、これらの段階を停止します。
|
| 470 |
|
| 471 |
#en
|
| 472 |
Set <var title="">number1</var> to the number returned by the
|
| 473 |
sub-algorithm in step 2.
|
| 474 |
#ja
|
| 475 |
<var title="">number1</var> を、段階 2 の部分算法が返した数とします。
|
| 476 |
|
| 477 |
#en
|
| 478 |
Starting with the character immediately after the last one examined by
|
| 479 |
the sub-algorithm in step 2, skip any characters in the string that are
|
| 480 |
in the Unicode character class Zs (this might match zero characters). <a
|
| 481 |
href="#refsUNICODE">[UNICODE]</a>
|
| 482 |
#ja
|
| 483 |
段階 2 の部分算法が調べた最後の文字の直後の文字から始めて、文字列中の Unicode
|
| 484 |
文字クラス Zs の文字を飛ばします (これに一致するのは零文字かもしれません)。 <a
|
| 485 |
href="#refsUNICODE">[UNICODE]</a>
|
| 486 |
|
| 487 |
#en
|
| 488 |
If there are still further characters in the string, and the next
|
| 489 |
character in the string is a <a href="#valid2">valid denominator
|
| 490 |
punctuation character</a>, set <var title="">denominator</var> to that
|
| 491 |
character.
|
| 492 |
#ja
|
| 493 |
文字列中に更に文字がまだある場合で、文字列中の次の文字が<a href="#valid2">妥当な分母句読点文字</a>である場合には、
|
| 494 |
<var title="">denominator</var> をその文字に設定します。
|
| 495 |
|
| 496 |
#en
|
| 497 |
If the string contains any other characters in the range U+0030 DIGIT
|
| 498 |
ZERO to U+0039 DIGIT NINE, but <var title="">denominator</var> was given
|
| 499 |
a value in the step 6, return nothing and abort these steps.
|
| 500 |
#ja
|
| 501 |
文字列が範囲 U+0030 DIGIT
|
| 502 |
ZERO ~ U+0039 DIGIT NINE の文字をまだ他に含んでいる場合で、
|
| 503 |
段階 6 で <var title="">denominator</var> に値が与えられた場合には、
|
| 504 |
何も返さず、これらの段階を停止します。
|
| 505 |
|
| 506 |
#en
|
| 507 |
Otherwise, if <var title="">denominator</var> was given a value in
|
| 508 |
step 6, return <var title="">number1</var> and <var
|
| 509 |
title="">denominator</var> and abort these steps.
|
| 510 |
#ja
|
| 511 |
そうでない場合、 <var title="">denominator</var> が段階 6
|
| 512 |
で値を与えられた場合には、 <var title="">number1</var> と <var
|
| 513 |
title="">denominator</var> を返し、これらの段階を停止します。
|
| 514 |
|
| 515 |
#en
|
| 516 |
<a href="#find-a">Find a number</a> in the string again, starting
|
| 517 |
immediately after the last character that was examined by the
|
| 518 |
sub-algorithm in step 2.
|
| 519 |
#ja
|
| 520 |
文字列中を更に<a href="#find-a">数を探します</a>が、
|
| 521 |
段階 2 の部分算法で調べた最後の文字の直後からはじめます。
|
| 522 |
|
| 523 |
#en
|
| 524 |
If the sub-algorithm in step 9 returned nothing or an error condition,
|
| 525 |
return nothing and abort these steps.
|
| 526 |
#ja
|
| 527 |
段階 9 の部分算法が何も返さないか、誤り条件を返す場合、
|
| 528 |
何も返さず、これらの段階を停止します。
|
| 529 |
|
| 530 |
#en
|
| 531 |
Set <var title="">number2</var> to the number returned by the
|
| 532 |
sub-algorithm in step 9.
|
| 533 |
#ja
|
| 534 |
<var title="">number2</var> を、段階 9 の部分算法が返した数とします。
|
| 535 |
|
| 536 |
#en
|
| 537 |
If there are still further characters in the string, and the next
|
| 538 |
character in the string is a <a href="#valid2">valid denominator
|
| 539 |
punctuation character</a>, return nothing and abort these steps.
|
| 540 |
#ja
|
| 541 |
文字列中に更に文字がまだある場合で、文字列中の次の文字が<a href="#valid2">妥当な分母句読点文字</a>である場合、
|
| 542 |
何も返さず、これらの段階を停止します。
|
| 543 |
|
| 544 |
#en
|
| 545 |
If the string contains any other characters in the range U+0030 DIGIT
|
| 546 |
ZERO to U+0039 DIGIT NINE, return nothing and abort these steps.
|
| 547 |
#ja
|
| 548 |
文字列が範囲 U+0030 DIGIT
|
| 549 |
ZERO ~ U+0039 DIGIT NINE の文字をまだ他に含んでいる場合、
|
| 550 |
何も返さず、これらの段階を停止します。
|
| 551 |
|
| 552 |
#en
|
| 553 |
Otherwise, return <var title="">number1</var> and <var
|
| 554 |
title="">number2</var>.
|
| 555 |
#ja
|
| 556 |
そうでない場合、 <var title="">number1</var> と <var
|
| 557 |
title="">number2</var> を返します。
|
| 558 |
|
| 559 |
#en
|
| 560 |
The algorithm to <dfn id=find-a>find a number</dfn> is as follows. It is
|
| 561 |
given a string and a starting position, and returns either nothing, a
|
| 562 |
number, or an error condition.
|
| 563 |
#ja
|
| 564 |
<dfn id=find-a>数を探す</dfn>ための算法は次の通りです。
|
| 565 |
この算法は、文字列と開始位置を与えられ、
|
| 566 |
何も返さないか、数を返すか、誤り条件を返すかのいずれかです。
|
| 567 |
|
| 568 |
#en
|
| 569 |
Starting at the given starting position, ignore all characters in the
|
| 570 |
given string until the first character that is either a U+002E FULL STOP
|
| 571 |
or one of the ten characters in the range U+0030 DIGIT ZERO to U+0039
|
| 572 |
DIGIT NINE.
|
| 573 |
#ja
|
| 574 |
与えられた開始位置からはじめ、 U+002E FULL STOP か、範囲 U+0030 DIGIT ZERO ~ U+0039
|
| 575 |
DIGIT NINE の10文字のいずれかであるような最初の文字まで、
|
| 576 |
その文字列中のすべての文字を無視します。
|
| 577 |
|
| 578 |
#en
|
| 579 |
If there are no such characters, return nothing and abort these steps.
|
| 580 |
#ja
|
| 581 |
そのような文字がない場合には、何も返さず、これらの段階を停止します。
|
| 582 |
|
| 583 |
#en
|
| 584 |
Starting with the character matched in step 1, collect all the
|
| 585 |
consecutive characters that are either a U+002E FULL STOP or one of the
|
| 586 |
ten characters in the range U+0030 DIGIT ZERO to U+0039 DIGIT NINE, and
|
| 587 |
assign this string of one or more characters to <var
|
| 588 |
title="">string</var>.
|
| 589 |
#ja
|
| 590 |
段階 1 で一致した文字からはじめ、 U+002E FULL STOP か、範囲 U+0030 DIGIT ZERO ~
|
| 591 |
U+0039 DIGIT NINE の10文字のいずれかであるような連続した文字群をすべて集め、
|
| 592 |
この1文字以上の文字からなる文字列を <var
|
| 593 |
title="">string</var> に代入します。
|
| 594 |
|
| 595 |
#en
|
| 596 |
If <var title="">string</var> contains more than one U+002E FULL STOP
|
| 597 |
character then return an error condition and abort these steps.
|
| 598 |
#ja
|
| 599 |
<var title="">string</var> が U+002E FULL STOP
|
| 600 |
文字を複数含んでいる場合、誤り条件を返し、これらの段階を停止します。
|
| 601 |
|
| 602 |
#en
|
| 603 |
Parse <var title="">string</var> according to the <a
|
| 604 |
href="#rules1">rules for parsing floating point number values</a>, to
|
| 605 |
obtain <var title="">number</var>. This step cannot fail (<var
|
| 606 |
title="">string</var> is guaranteed to be a <a href="#valid1">valid
|
| 607 |
floating point number</a>).
|
| 608 |
#ja
|
| 609 |
<var title="">string</var> を<a
|
| 610 |
href="#rules1">浮動小数点数値を構文解析する規則</a>により構文解析し、
|
| 611 |
<var title="">number</var> を得ます。この段階は失敗しません (<var
|
| 612 |
title="">string</var> は<a href="#valid1">妥当な浮動小数点数</a>であることが保証されています)。
|
| 613 |
|
| 614 |
#en
|
| 615 |
Return <var title="">number</var>.
|
| 616 |
#ja
|
| 617 |
<var title="">number</var> を返します。
|
| 618 |
|
| 619 |
#pattern
|
| 620 |
<span class=secno>*
|
| 621 |
</span>Percentages and dimensions
|
| 622 |
#ja
|
| 623 |
<span class=secno>$1
|
| 624 |
</span>百分率と寸法
|
| 625 |
|
| 626 |
#pattern
|
| 627 |
<span class=secno>* </span>Lists of integers
|
| 628 |
#ja
|
| 629 |
<span class=secno>$1 </span>整数のリスト
|
| 630 |
|
| 631 |
#en
|
| 632 |
A <dfn id=valid4>valid list of integers</dfn> is a number of <a
|
| 633 |
href="#valid0" title="valid integer">valid integers</a> separated by
|
| 634 |
U+002C COMMA characters, with no other characters (e.g. no <a
|
| 635 |
href="#space" title="space character">space characters</a>). In addition,
|
| 636 |
there might be restrictions on the number of integers that can be given,
|
| 637 |
or on the range of values allowed.
|
| 638 |
#ja
|
| 639 |
<dfn id=valid4>妥当な整数の並び</dfn>は、 U+002C COMMA
|
| 640 |
文字で分離された数々の<a
|
| 641 |
href="#valid0" title="valid integer">妥当な整数</a>であって、
|
| 642 |
他の文字を含まない (例えば<a
|
| 643 |
href="#space" title="space character">間隔文字</a>を含まない) ものです。
|
| 644 |
加えて、与えられる整数の数や認められる値の範囲に制限が設けられることがあります。
|
| 645 |
|
| 646 |
#en
|
| 647 |
The <dfn id=rules3>rules for parsing a list of integers</dfn> are as
|
| 648 |
follows:
|
| 649 |
#ja
|
| 650 |
<dfn id=rules3>整数のリストを構文解析する規則</dfn>は次の通りです。
|
| 651 |
|
| 652 |
#en
|
| 653 |
Let <var title="">numbers</var> be an initially empty list of
|
| 654 |
integers. This list will be the result of this algorithm.
|
| 655 |
#ja
|
| 656 |
<var title="">numbers</var> を、初期状態として、空の整数のリストとします。
|
| 657 |
このリストは、この算法の結果となります。
|
| 658 |
|
| 659 |
#en
|
| 660 |
If there is a character in the string <var title="">input</var> at
|
| 661 |
position <var title="">position</var>, and it is either a U+0020 SPACE,
|
| 662 |
U+002C COMMA, or U+003B SEMICOLON character, then advance <var
|
| 663 |
title="">position</var> to the next character in <var
|
| 664 |
title="">input</var>, or to beyond the end of the string if there are no
|
| 665 |
more characters.
|
| 666 |
#ja
|
| 667 |
文字列 <var title="">input</var> の位置 <var title="">position</var>
|
| 668 |
に文字があり、これが U+0020 SPACE、U+002C COMMA、 U+003B SEMICOLON
|
| 669 |
のいずれかの文字であれば、 <var
|
| 670 |
title="">position</var> を <var
|
| 671 |
title="">input</var> 中の次の文字に進めるか、それ以上文字がないのであれば文字列の終わりを過ぎたとします。
|
| 672 |
|
| 673 |
#en
|
| 674 |
Advance <var
|
| 675 |
title="">position</var> to the next character in <var
|
| 676 |
title="">input</var>, or to beyond the end of the string if there are no
|
| 677 |
more characters.
|
| 678 |
#ja
|
| 679 |
<var
|
| 680 |
title="">position</var> を <var
|
| 681 |
title="">input</var> 中の次の文字に進めるか、それ以上文字がないのであれば文字列の終わりを過ぎたとします。
|
| 682 |
|
| 683 |
#en
|
| 684 |
If <var title="">position</var> points to beyond the end of <var
|
| 685 |
title="">input</var>, return <var title="">numbers</var> and abort.
|
| 686 |
#ja
|
| 687 |
<var title="">position</var> が <var
|
| 688 |
title="">input</var> の終わりを過ぎた先を指していれば、
|
| 689 |
<var title="">numbers</var> を返し、停止します。
|
| 690 |
|
| 691 |
#en
|
| 692 |
If the character in the string <var title="">input</var> at position
|
| 693 |
<var title="">position</var> is a U+0020 SPACE, U+002C COMMA, or U+003B
|
| 694 |
SEMICOLON character, then return to step 4.
|
| 695 |
#ja
|
| 696 |
文字列 <var title="">input</var> の位置 <var title="">position</var>
|
| 697 |
が U+0020 SPACE、U+002C COMMA、U+003B
|
| 698 |
SEMICOLON のいずれかの文字であれば、段階 4 に戻ります。
|
| 699 |
|
| 700 |
#en
|
| 701 |
Let <var title="">value</var> be 0.
|
| 702 |
#ja
|
| 703 |
<var title="">value</var> を 0 とします。
|
| 704 |
|
| 705 |
#en
|
| 706 |
Let <var title="">started</var> be false. This variable is set to true
|
| 707 |
when the parser sees a number or a "<code title="">-</code>" character.
|
| 708 |
#ja
|
| 709 |
<var title="">started</var> を偽とします。この変数は、
|
| 710 |
構文解析器が数か「<code title="">-</code>」文字を見たときに真に設定されます。
|
| 711 |
|
| 712 |
#en
|
| 713 |
Let <var title="">got number</var> be false. This variable is set to
|
| 714 |
true when the parser sees a number.
|
| 715 |
#ja
|
| 716 |
<var title="">got number</var> を偽とします。この変数は構文解析器が数を見たときに真に設定されます。
|
| 717 |
|
| 718 |
#en
|
| 719 |
Let <var title="">finished</var> be false. This variable is set to
|
| 720 |
true to switch parser into a mode where it ignores characters until the
|
| 721 |
next separator.
|
| 722 |
#ja
|
| 723 |
<var title="">finished</var> を偽とします。この変数は構文解析器が次の分離子まで文字を無視するモードに切り替わったとき真に設定されます。
|
| 724 |
|
| 725 |
#en
|
| 726 |
<em>Parser:</em> If the character in the string <var
|
| 727 |
title="">input</var> at position <var title="">position</var> is:
|
| 728 |
#ja
|
| 729 |
<em>構文解析器:</em> 文字列 <var
|
| 730 |
title="">input</var> 位置 <var title="">position</var>
|
| 731 |
の文字が、
|
| 732 |
|
| 733 |
#en
|
| 734 |
A U+002D HYPHEN-MINUS character
|
| 735 |
#ja
|
| 736 |
U+002D HYPHEN-MINUS 文字の場合
|
| 737 |
|
| 738 |
#en
|
| 739 |
Follow these substeps:
|
| 740 |
#ja
|
| 741 |
次の部分段階に従います。
|
| 742 |
|
| 743 |
#en
|
| 744 |
If <var title="">got number</var> is true, let <var
|
| 745 |
title="">finished</var> be true.
|
| 746 |
#ja
|
| 747 |
<var title="">got number</var> が真である場合、 <var
|
| 748 |
title="">finished</var> を真とします。
|
| 749 |
|
| 750 |
#en
|
| 751 |
If <var title="">finished</var> is true, skip to the next step in
|
| 752 |
the overall set of steps.
|
| 753 |
#ja
|
| 754 |
<var title="">finished</var> が真であれる場合、全体の段階の集合のうちの次の段階に飛びます。
|
| 755 |
|
| 756 |
#en
|
| 757 |
If <var title="">started</var> is true, let <var
|
| 758 |
title="">negated</var> be false.
|
| 759 |
#ja
|
| 760 |
<var title="">started</var> が真である場合、 <var
|
| 761 |
title="">negated</var> を偽とします。
|
| 762 |
|
| 763 |
#en
|
| 764 |
Otherwise, if <var title="">started</var> is false and if <var
|
| 765 |
title="">bogus</var> is false, let <var title="">negated</var> be
|
| 766 |
true.
|
| 767 |
#ja
|
| 768 |
そうでない場合、<var title="">started</var> が偽であり、 <var
|
| 769 |
title="">bogus</var> が偽である場合、 <var title="">negated</var>
|
| 770 |
を真とします。
|
| 771 |
|
| 772 |
#en
|
| 773 |
Let <var title="">started</var> be true.
|
| 774 |
#ja
|
| 775 |
<var title="">started</var> を真とします。
|
| 776 |
|
| 777 |
#en
|
| 778 |
A character in the range U+0030 DIGIT ZERO .. U+0039 DIGIT NINE
|
| 779 |
#ja
|
| 780 |
範囲 U+0030 DIGIT ZERO ~ U+0039 DIGIT NINE の文字の場合
|
| 781 |
|
| 782 |
#en
|
| 783 |
Add the value of the digit, interpreted in base ten, to <var
|
| 784 |
title="">value</var>.
|
| 785 |
#ja
|
| 786 |
数字を十進数で解釈した場合の値を <var
|
| 787 |
title="">value</var> に加えます。
|
| 788 |
|
| 789 |
#en
|
| 790 |
Let <var title="">got number</var> be true.
|
| 791 |
#ja
|
| 792 |
<var title="">got number</var> を真とします。
|
| 793 |
|
| 794 |
#en
|
| 795 |
A U+0020 SPACE character
|
| 796 |
#ja
|
| 797 |
U+0020 SPACE 文字の場合
|
| 798 |
|
| 799 |
#en
|
| 800 |
A U+002C COMMA character
|
| 801 |
#ja
|
| 802 |
U+002C COMMA 文字の場合
|
| 803 |
|
| 804 |
#en
|
| 805 |
A U+003B SEMICOLON character
|
| 806 |
#ja
|
| 807 |
U+003B SEMICOLON 文字の場合
|
| 808 |
|
| 809 |
#en
|
| 810 |
If <var title="">got number</var> is false, return the <var
|
| 811 |
title="">numbers</var> list and abort. This happens if an entry in
|
| 812 |
the list has no digits, as in "<code title="">1,2,x,4</code>".
|
| 813 |
#ja
|
| 814 |
<var title="">got number</var> が偽の場合、 <var
|
| 815 |
title="">numbers</var> リストを返し、停止します。
|
| 816 |
これは、「<code title="">1,2,x,4</code>」のようにリスト中の項目が数字を持たない場合に起こります。
|
| 817 |
|
| 818 |
#en
|
| 819 |
Return the <var
|
| 820 |
title="">numbers</var> list and abort.
|
| 821 |
#ja
|
| 822 |
<var
|
| 823 |
title="">numbers</var> リストを返し、停止します。
|
| 824 |
|
| 825 |
#en
|
| 826 |
If <var title="">negated</var> is true, then negate <var
|
| 827 |
title="">value</var>.
|
| 828 |
#ja
|
| 829 |
<var title="">negated</var> が真の場合、 <var
|
| 830 |
title="">value</var> を負にします。
|
| 831 |
|
| 832 |
#en
|
| 833 |
Append <var title="">value</var> to the <var
|
| 834 |
title="">numbers</var> list.
|
| 835 |
#ja
|
| 836 |
<var title="">value</var> を <var
|
| 837 |
title="">numbers</var> リストの末尾に追加します。
|
| 838 |
|
| 839 |
#en
|
| 840 |
Jump to step 4 in the overall set of steps.
|
| 841 |
#ja
|
| 842 |
全体の段階の集合のうちの段階 4 に飛びます。
|
| 843 |
|
| 844 |
#en
|
| 845 |
A U+002E FULL STOP character
|
| 846 |
#ja
|
| 847 |
U+002E FULL STOP 文字の場合
|
| 848 |
|
| 849 |
#en
|
| 850 |
Any other character
|
| 851 |
#ja
|
| 852 |
その他の文字の場合
|
| 853 |
|
| 854 |
#en
|
| 855 |
Let <var title="">bogus</var> be true.
|
| 856 |
#ja
|
| 857 |
<var title="">bogus</var> を真とします。
|
| 858 |
|
| 859 |
#en
|
| 860 |
If <var title="">started</var> is true, then return the <var
|
| 861 |
title="">numbers</var> list, and abort. (The value in <var
|
| 862 |
title="">value</var> is not appended to the list first; it is
|
| 863 |
dropped.)
|
| 864 |
#ja
|
| 865 |
<var title="">started</var> が真の場合、 <var
|
| 866 |
title="">numbers</var> リストを返し、停止します。
|
| 867 |
(<var
|
| 868 |
title="">value</var> の値はリストに最初に追加されてはいません。
|
| 869 |
捨てられます。)
|
| 870 |
|
| 871 |
#en
|
| 872 |
If <var title="">position</var> points to a character (and not to
|
| 873 |
beyond the end of <var title="">input</var>), jump to the big
|
| 874 |
<em>Parser</em> step above.
|
| 875 |
#ja
|
| 876 |
<var title="">position</var> が文字を指す場合 (で
|
| 877 |
<var title="">input</var> の終わりを過ぎていない場合)、
|
| 878 |
先の大段階<em>構文解析器</em>に飛びます。
|
| 879 |
|
| 880 |
|
| 881 |
|