ãã®ä»æ§ã¯ãå€ãã®å Žåãåãæèã«ãããŠHTMLããã³XMLã®å±æ§ãšIDL屿§ã®äž¡æ¹ã«èšåãããã©ã®å±æ§ã«ã€ããŠèšåãããŠããããäžæçãªå ŽåãHTMLããã³XML屿§ã®ã³ã³ãã³ã屿§ãããã³IDLã€ã³ã¿ãŒãã§ãŒã¹ã«å®çŸ©ãããIDL屿§ãšããŠèšåããããåæ§ã«ãçšèª"ããããã£ãŒ"ã¯ãJavaScriptã®ãªããžã§ã¯ãããããã£ãŒãšCSSããããã£ãŒã®äž¡æ¹ã«äœ¿çšããããããããã£ãŒãäžæçã®å Žåããããããªããžã§ã¯ãããããã£ãŒããã³CSSããããã£ãŒãšããŠä¿®é£Ÿãããã
äžè¬ã«ãããæ©èœãHTMLæ§æãŸãã¯XHTMLæ§æã®äžæ¹ã«åœãŠã¯ãŸããšä»æ§ãèšåããå Žåã仿¹ãå«ããæ©èœã2ã€ã®èšèªã®1ã€ã®ã¿æç¢ºã«åœãŠã¯ãŸãå Žåã"HTMLã«å¯ŸããŠâŠïŒããã¯XHTMLã«é©çšãããªãïŒ"ã®ããã«ã仿¹ã®åœ¢åŒã«é©çšãããªãããšãæç€ºçã«ç€ºãããã
ãã®ä»æ§ã¯ãçãéçãªææžãããªãããªãã«ãã¡ãã£ã¢ã䌎ãé·ããšãã»ã€ãã¬ããŒãã ãã§ãªããæ¬æ Œçãªå¯Ÿè©±åã¢ããªã±ãŒã·ã§ã³ã«ãŸã§è³ããHTMLã®ä»»æã®çšæ³ã衚ãçšèªææžã䜿çšããããã®çšèªã¯ãæèã«å¿ããŠDocumentãªããžã§ã¯ãããã³ãã®åå«DOMããªãŒãHTMLæ§æãŸãã¯XHTMLæ§æãçšããŠã·ãªã¢ã«åããããã€ãã¹ããªãŒã ã®äž¡æ¹ã衚ãããã«äœ¿çšãããã
DOMæ§é ã®æèã«ãããŠãçšèªHTMLææžããã³XMLææžã¯ãDOM仿§ã§å®çŸ©ããããšããã«äœ¿çšãããDocumentãªããžã§ã¯ããèªåèªèº«ãèŠã€ããããšãã§ãã2ã€ã®ç°ãªãã¢ãŒãã衚ãã[DOM]ïŒãã®ãããªçšéã¯åžžã«å®çŸ©ã«ãã€ããŒãªã³ã¯ããããïŒ
ãã€ãã¹ããªãŒã ã®æèã«ãããŠãçšèªHTMLææžã¯ãtext/htmlãšããŠåé¡ããããªãœãŒã¹ãæããçšèªXMLææžã¯ãXML MIMEã¿ã€ãã§åé¡ããããªãœãŒã¹ãæãã
çšèªXHTMLææžã¯ãæèã«å¿ããŠãHTMLåå空éå
ã®èŠçŽ ããŒããå«ãXMLææžã¢ãŒãã§ã®Documentãããã³HTMLåå空éç±æ¥ã®èŠçŽ ãå«ãXML MIMEã¿ã€ãã«åé¡ããããã€ãã¹ããªãŒã ã®äž¡æ¹ã瀺ãããã«äœ¿çšãããã
ç°¡æœãã®ããã«ãææžããŠãŒã¶ãŒã«è¡šç€ºãããæ¹æ³ãåç §ããéãïŒåæã§ããïŒshownãdisplayedãvisibleã®ãããªçšèªãæã«äœ¿çšããããããããªãããããã®çšèªã¯ãèŠèŠã¡ãã£ã¢ãæå³ãããã®ã§ã¯ãªããåçã®æ¹æ³ã§ãä»ã®ã¡ãã£ã¢ã«é©çšããããšèããªããã°ãªããªãã
When an algorithm B says to return to another algorithm A, it implies that A called B. Upon returning to A, the implementation must continue from where it left off in calling B.
çšèª"éæãªé»"ã¯ãèµ€ãç·ãéãããã³ã¢ã«ãã¡ãã£ã³ãã«ããã¹ãŠ0ã«èšå®ããè²ãæãã
仿§ã¯ããŠãŒã¶ãŒãšãŒãžã§ã³ããå€éšãªãœãŒã¹ã®ã»ãã³ãã£ãã¯ããã³ãŒãå¯èœãªå®è£ ãæã€ãã©ãããåç §ããå Žåã«çšèªãµããŒããããã䜿çšããããã©ãŒããããŸãã¯ã¿ã€ãã¯ãéèŠãªãªãœãŒã¹ã®æ©èœãç¡èŠãããããšãªããå®è£ ããã®ãã©ãŒããããã¿ã€ãã®å€éšãªãœãŒã¹ãåŠçã§ããå Žåã¯ãµããŒãããããšèšããããç¹å®ã®ãªãœãŒã¹ããµããŒãããããã©ããã¯ããªãœãŒã¹ã®ãã©ãŒãããã®ã©ã®æ©èœã䜿çšããããã«äŸåããã ããã
ããšãã°ãããšãå®è£ ã®ç¥ããªããã¡ã«ãç»åãã¢ãã¡ãŒã·ã§ã³ããŒã¿ãå«ãå Žåã§ããç»åã®ãã¯ã»ã«ããŒã¿ããã³ãŒãããã¬ã³ããªã³ã°ããããªãã°ãPNGç»åã¯ãµããŒãããããã©ãŒãããã§ãããšèŠãªãããã ããã
ããšãå®è£ ããã¡ã€ã«ã®ã¡ã¿ããŒã¿ããã ãŒããŒã®å¯žæ³ã決å®å¯èœã§ãã䜿çšãããå§çž®åœ¢åŒããµããŒããããŠããªãã£ãå ŽåãMPEG-4ãããªãã¡ã€ã«ã¯ãµããŒãããããã©ãŒãããã§ãããšã¿ãªãããªãã
ç¹ã«HTTP仿§ã«ãããŠãäžéšã®ä»æ§ãrepresentationãšè¡šããããã®ã¯ããã®ä»æ§ã§ãªãœãŒã¹ãšããŠè¡šãããã[HTTP]
çšèªMIMEã¿ã€ãã¯ããããã³ã«ã®æç®ã§ææã€ã³ã¿ãŒãããã¡ãã£ã¢ã¿ã€ããšåŒã°ãããã®ãæãã®ã«äœ¿çšãããããã®ä»æ§ã«ãããŠãçšèªã¡ãã£ã¢ã¿ã€ãã¯ãCSS仿§ã«ããçšããããããã«ããã¬ãŒã³ããŒã·ã§ã³ã®ããã«æå³ãããã¡ãã£ã¢ã®çš®é¡ãæç€ºããããã«äœ¿çšãããã[RFC2046] [MQ]
ã¡ãã£ã¢ã¿ã€ããRFC 7231ã®3.1.1.1ç¯"Media Types"ã§å®çŸ©ãããmedia-typeèŠåã«äžèŽããå Žåãæååã¯åŠ¥åœãªMIMEã¿ã€ããšãªããå
·äœçã«ã¯ã劥åœãªMIMEã¿ã€ãã¯MIMEã¿ã€ãã®ãã©ã¡ãŒã¿ãå«ãã§ãããã[HTTP]
";"ïŒU+003BïŒæåãå«ãŸãªãããRFC 7231ã®3.1.1.1ç¯"Media Types"ã§å®çŸ©ãããmedia-typeèŠåã«äžèŽããå Žåãæååã¯ãã©ã¡ãŒã¿ãªãã®åŠ¥åœãªMIMEã¿ã€ããšãªããèšãæããã°ãMIMEã¿ã€ãã®ãã©ã¡ãŒã¿ããªããã¿ã€ãããã³ãµãã¿ã€ãã®ã¿ããæ§æãããå Žåã§ããã[HTTP]
çšèªHTML MIMEã¿ã€ãã¯ãMIMEã¿ã€ããtext/htmlã衚ãããã«äœ¿çšãããã
ãªãœãŒã¹ã®ã¯ãªãã£ã«ã«ãµããªãœãŒã¹ã¯ããªãœãŒã¹ãæ£ããåŠçãããããã«äœ¿çšã§ããç¶æ ã«ããŠããå¿ èŠããããã®ã§ãããã©ã®ãªãœãŒã¹ãã¯ãªãã£ã«ã«ãã©ãããšã¿ãªããããã¯ããªãœãŒã¹ã®ãã©ãŒããããå®çŸ©ãã仿§ã«ãã£ãŠå®çŸ©ãããªãã
çšèªdata: URLã¯ãdata:ã¹ããŒã ãçšããURLãæãã[RFC2397]
HTMLããXHTMLãžã®ç§»è¡ã容æã«ããããããã®ä»æ§ã«æºæ ãããŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ãå°ãªããšãDOMãšCSSã®ããã«ãhttp://www.w3.org/1999/xhtmlåå空éã«HTMLã§èŠçŽ ãé
眮ããã ããããã®ä»æ§ã§äœ¿çšãããçšèª"HTMLèŠçŽ "ã¯ããã®åå空éå
ã®ä»»æã®èŠçŽ ãæãããããã£ãŠãHTMLãšXHTMLã®èŠçŽ ã®äž¡æ¹ãæãã
ä»ã«èšèŒãããå Žåãé€ãããã®ä»æ§ã§å®çŸ©ãŸãã¯èšèŒããããã¹ãŠã®èŠçŽ ã¯HTMLåå空éïŒ"http://www.w3.org/1999/xhtml"ïŒã§ããããã®ä»æ§ã§å®çŸ©ãŸãã¯èšèŒããããã¹ãŠã®å±æ§ã¯åå空éãæããªãã
çšèªèŠçŽ ã¿ã€ãã¯ãäžããããããŒã«ã«åãšåå空éãæã€èŠçŽ ã®éåãåç
§ããããã«äœ¿çšããããããšãã°ãbuttonèŠçŽ ã¯èŠçŽ åbuttonããã€èŠçŽ ã§ãããããŒã«ã«å"button"ããã³ïŒäžã§å®çŸ©ãããããã«æé»ã®ãã¡ã«ïŒHTMLåå空éãæã€ããšãæå³ããã
屿§åãXMLã§å®çŸ©ãããNameçæç©ãšäžèŽãã":"ïŒU+003AïŒæåãå«ãŸãããã€æåã®3æåã®æååãASCII倧æåã»å°æåäžåºå¥ã§æåå"xml"ã«äžèŽããªãå Žåã屿§åã¯XMLäºæã§ãããšèšãããã[XML]
çšèªXML MIMEã¿ã€ãã¯ãMIMEã¿ã€ãtext/xmlãapplication/xmlãsubtypeã4æå"+xml"ã§çµããä»»æã®MIMEã¿ã€ããåç
§ããããã«äœ¿çšãããã[RFC7303]
Documentãªããžã§ã¯ãã®ã«ãŒãèŠçŽ ã¯ãããããã°ããã®Documentãæã€æåã®èŠçŽ ã®åã§ããããããªããªãã°ãDocumentã¯ã«ãŒãèŠçŽ ãæããªãã
Documentãªããžã§ã¯ãã®ã«ãŒãèŠçŽ ã瀺ããªãå Žåãçšèªã«ãŒãèŠçŽ ã¯ãè°è«ãããããŒãã§ã®æãé ãå
ç¥èŠçŽ ããŒãããŸãã¯å
ç¥ãæããªãããŒãèªèº«ãæå³ãããããŒããææžã®äžéšã§ããå ŽåãããŒãã®ã«ãŒãèŠçŽ ã¯ææžã®ã«ãŒãèŠçŽ ãã®ãã®ã§ãããããããäžè¬ã«ããŒããææžããªãŒã®äžéšã§ãªããªãã°ãã«ãŒãèŠçŽ ã¯å€ç«ããããŒãã ããã
èŠçŽ ã®ã«ãŒãèŠçŽ ãDocumentãªããžã§ã¯ãã®ã«ãŒãèŠçŽ ã§ããå ŽåãããŒãã¯Documentå
ã«ãããšèšããããããŒãã®ã«ãŒãèŠçŽ ãå€åããŠãã€çŸåšã®ææžã®ã«ãŒãèŠçŽ ã§ããå ŽåãããŒãã¯æ¿å
¥ãããææžã§ãããšèšããããåæ§ã«ãææžã®ã«ãŒãèŠçŽ ããå¥ã®èŠçŽ ã«ã«ãŒãèŠçŽ ãå€ããå ŽåãããŒãã¯åé€ãããææžã§ãããšèšãããã
ããŒãã®ããŒã ãµãããªãŒã¯ããã®ããŒãã®ã«ãŒãèŠçŽ ãã«ãŒããšãããµãããªãŒã§ãããããŒããDocumentå
ã«ããå ŽåãããŒãã®ããŒã ãµãããªãŒã¯ãããŒãã®DocumentããªãŒã§ããã
ïŒèŠçŽ ã®ãããªïŒããNodeã®Documentã¯ãNodeã®ownerDocumentIDL屿§ãè¿ãDocumentã§ãããããNodeãDocumentå
ã«ããå Žåããã®Documentã¯åžžã«Nodeã®Documentã§ããããããã£ãŠNodeã®ownerDocumentIDL屿§ã¯åžžã«ãã®Documentãè¿ãã
ã³ã³ãã³ã屿§ã®Documentã¯ã屿§ã®èŠçŽ ã®Documentã§ããã
çšèªããªãŒé ã¯å
è¡é ãæå³ããïŒparentNode/childNodesã®é¢ä¿ãéããŠïŒDOMããŒãã®çžŠåèµ°æ»ã«é¢ä¿ããã
When it is stated that some element or attribute is ignored, or treated as some other value, or handled as if it was something else, this refers only to the processing of the node after it is in the DOM. A user agent must not mutate the DOM in such situations.
æ°ããå€ãåã®å€ãšç°ãªã£ãŠããå Žåã®ã¿ãã³ã³ãã³ã屿§ã¯å€ã倿Žãããšèšããããæ¢ã«æã€å±æ§å€ãèšå®ããããšã¯å€æŽã§ã¯ãªãã
çšèªç©ºã¯ã屿§å€ãTextããŒãããŸãã¯æååã§äœ¿çšãããå Žåãããã¹ãã®é·ãããŒãã§ããããšãæå³ããïŒã€ãŸããã¹ããŒã¹ãå¶åŸ¡æåããå«ãŸãªãïŒã
æ§é äœ"Fooãªããžã§ã¯ã"ã¯ãFooãå®éã«ã€ã³ã¿ãŒãã§ãŒã¹ã§ããå Žåãææããæ£ç¢ºãª"Fooã€ã³ã¿ãŒãã§ãŒã¹ãå®è£
ãããªããžã§ã¯ã"ã®ä»£ããã«äœ¿çšãããã
IDL屿§ã¯ããã®å€ãïŒèè ã®ã¹ã¯ãªãããªã©ã«ãã£ãŠïŒååŸæã«ååŸããããšèšãããæ°ããå€ãå²ãåœãŠãããéã«èšå®ããããšèšãããã
If a DOM object is said to be live, then the attributes and methods on that object must operate on the actual underlying data, not a snapshot of the data.
ã€ãã³ãã®ã³ã³ããã¹ãã«ãããŠãçšèªçºç«ãéåºã¯ãDOM仿§ã§å®çŸ©ããããšããã«äœ¿çšããããã€ãã³ãã®çºç«ã¯ãã€ãã³ããäœæãéåºããããšãæå³ããã€ãã³ãã®éåºã¯ãããªãŒãä»ããŠã€ãã³ããäŒæããæé ãå®è¡ããããšãæå³ãããçšèªä¿¡é Œæžã¿ã€ãã³ãã¯ãisTrusted屿§ãtrueã«åæåãããã€ãã³ããåç
§ããããã«äœ¿çšãããã[DOM]
çšèªãã©ã°ã€ã³ã¯ãDocumentãªããžã§ã¯ãã®å±ãããŠãŒã¶ãŒãšãŒãžã§ã³ãã®ã¬ã³ããªã³ã°ã«é¢äžå¯èœãªããŠãŒã¶ãŒãšãŒãžã§ã³ãã«ãã£ãŠäœ¿çšãããã³ã³ãã³ããã³ãã©ã®çµã«å®çŸ©ããããŠãŒã¶ãŒãšãŒãžã§ã³ããåç
§ããããDocumentã®åãã©ãŠãžã³ã°ã³ã³ããã¹ããšããŠæ¯ãèãããšããä»»æã®Nodeãªããžã§ã¯ããDocumentã®DOMã«å°å
¥ããããšããªãã
éåžžããã®ãããªã³ã³ãã³ããã³ãã©ã¯ã第äžè ã«ãã£ãŠæäŸãããããã£ãšããŠãŒã¶ãŒãšãŒãžã§ã³ãããŸãããã©ã°ã€ã³ãšããŠãã«ãã€ã³ã³ã³ãã³ãã®ãã³ãã©ãæå®ã§ããã
A user agent must not consider the types text/plain and
application/octet-stream as having a registered plugin.
ãã©ã°ã€ã³ã®äžäŸã¯ããŠãŒã¶ãŒãPDFãã¡ã€ã«ãæäœãããšãã«ãã©ãŠãžã³ã°ã³ã³ããã¹ãã§ã€ã³ã¹ã¿ã³ã¹ãçæãããPDFãã¥ãŒã¢ã§ããããããã¯ãå®è£ ãããPDFãã¥ãŒã¢ã³ã³ããŒãã³ãããŠãŒã¶ãŒãšãŒãžã§ã³ãèªèº«ã«å®è£ ããããã®ãšåãã¡ãŒã«ãŒãã©ããã«ãããããããã©ã°ã€ã³ãšããŠã«ãŠã³ããããã ããããããããŠãŒã¶ãŒãšãŒãžã§ã³ãïŒåãã€ã³ã¿ãŒãã§ãŒã¹ã䜿çšããã®ã§ã¯ãªãïŒãšã¯å¥ã«èµ·åããPDFãã¥ãŒã¢ã¢ããªã±ãŒã·ã§ã³ã¯ããã®å®çŸ©ã«ãããã©ã°ã€ã³ã§ã¯ãªãã
ãã©ã°ã€ã³ã¯ãŠãŒã¶ãŒãšãŒãžã§ã³ãåºæãã€ãã©ãããã©ãŒã åºæã§ããããšãäºæž¬ãããã®ã§ããã®ä»æ§ã¯ãã©ã°ã€ã³ãšæ å ±äº€æããããã®ã¡ã«ããºã ãå®çŸ©ããªããäžéšã®ãŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ãNetscapeãã©ã°ã€ã³APIã®ãããªãã©ã°ã€ã³æ©æ§ããµããŒãããããšãéžã¶ãããããªããä»ã®ãŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ããªã¢ãŒãã³ã³ãã³ãã³ã³ããŒã¿ã䜿çšãããããŸãã¯ç¹å®ã®çš®é¡ã®ãã«ãã€ã³ãµããŒããæã€ãããããªããå®éã«ããã®ä»æ§ã¯ãŠãŒã¶ãŒãšãŒãžã§ã³ãã«ãã©ã°ã€ã³ã®ãµããŒããäžåèŠæ±ããªãã[NPAPI]
sandbox屿§ã®ã»ãã³ãã£ãã¯ãåãåãå Žåããã©ã°ã€ã³ã¯ä¿è·ãããã ããã
ããšãã°ãä¿è·ããããã©ã°ã€ã³ã¯ããã©ã°ã€ã³ããµã³ãããã¯ã¹åãããiframeå
éšã§ã€ã³ã¹ã¿ã³ã¹åãããéãã³ã³ãã³ãããããã¢ãããŠã£ã³ããŠãçæããããšããé²ãã ããã
Browsers should take extreme care when interacting with external content intended for plugins. When third-party software is run with the same privileges as the user agent itself, vulnerabilities in the third-party software become as dangerous as those in the user agent.
Since different users having differents sets of plugins provides a
fingerprinting vector that increases the chances of users being uniquely identified, user agents
are encouraged to support the exact same set of plugins for each
user.
æåãšã³ã³ãŒãã£ã³ã°ããŸãã¯ææ§ã§ãªãç®æã§ã®åã«ãšã³ã³ãŒãã£ã³ã°ã¯ããšã³ã³ãŒãã£ã³ã°æšæºã§å®çŸ©ãããããã«ããã€ãã¹ããªãŒã ãšUnicodeæååãšã®éã§ã®å€ææ¹æ³ãå®çŸ©ããããšã³ã³ãŒãã£ã³ã°ã¯ããšã³ã³ãŒãã£ã³ã°ä»æ§ã§ãšã³ã³ãŒãã£ã³ã°ã®ååããã³ã©ãã«ãšããŠåç §ãããããšã³ã³ãŒãã£ã³ã°åããã³1ã€ä»¥äžã®ãšã³ã³ãŒãã£ã³ã°ã©ãã«ãæã€ã[ENCODING]
ASCIIäºææåãšã³ã³ãŒãã£ã³ã°ã¯ããã€ã0x09ã0x0Aã0x0Cã0x0Dã0x20-0x22ã0x26ã0x27ã0x2C-0x3Fã0x41-0x5Aããã³0x61-0x7A, ignoring bytes that are the second and later bytes of multibyte sequences, all correspond to single-byte sequences that map to the same Unicode characters as those bytes in Windows-1252 [ENCODING]
ããšããšã³ã³ãŒãã£ã³ã°ã§0x70ã®ãããªãã€ãã«ãšã£ãŠASCIIãšããŠã®è§£éãšã¯ç¡é¢ä¿ãªãããé·ãã·ãŒã±ã³ã¹ã®äžéšã§ããå¯èœæ§ããããšããŠããããã¯ãShift_JISãHZ-GB-2312ããã³ISO-2022ã®äºçš®ãªã©ã®ãšã³ã³ãŒãã£ã³ã°ãå«ããããã¯ãUTF-7ãGSM03.38ãããã³EBCDICã®äºçš®ã®ãããªæ§åŒã®ã¬ã¬ã·ãŒãšã³ã³ãŒãã£ã³ã°ãé€å€ããã
çšèªUTF-16ãšã³ã³ãŒãã£ã³ã°ã¯UTF-16ã®ä»»æã®å€çš®ãBOMã®ãããªãã«é¢ããããUTF-16LEãŸãã¯UTF-16BEãæãã[ENCODING]
çšèªã³ãŒãåäœã¯Web IDL仿§ã§å®çŸ©ããããšããã16ããã笊å·ãªãæŽæ°ãDOMStringã®æå°ã®åºæ¬ã³ã³ããŒãã³ããšããŠäœ¿çšããããïŒããã¯ãUnicodeã§äœ¿çšããããã®ããçãå®çŸ©ã§ãããã³ãŒããã€ã³ããšåäžã§ã¯ãªããïŒ[WEBIDL]
çšèªUnicodeã³ãŒããã€ã³ãã¯ãå¯èœã§ããã°Unicodeã¹ã«ã©ãŒå€ããããã§ãªããªãã°å€ç«ãµãã²ãŒãã³ãŒããã€ã³ããæå³ãããé©åèŠä»¶ãæåãŸãã¯Unicodeã³ãŒããã€ã³ãã®çšèªã§å®çŸ©ãããå Žåãäžäœãµãã²ãŒãã«ç¶ãäžäœãµãã²ãŒãããæãã³ãŒãåäœã®ãã¢ã¯ããµãã²ãŒããã¢ã§è¡šãããåäžã®ã³ãŒããã€ã³ããšããŠæ±ãããªããã°ãªããªãããå€ç«ãããµãã²ãŒãã¯ããµãã²ãŒãã®å€ãæã€åäžã®ã³ãŒããã€ã³ããšããŠããããæ±ãããªããã°ãªããªãã[UNICODE]
ãã®ä»æ§ã«ãããŠãçšèªæåã¯ãUnicodeæåãšããŠä¿®é£ŸãããŠãå ŽåãçšèªUnicodeã³ãŒããã€ã³ããšå矩ã§ããã
çšèªUnicodeæåã¯ãUnicodeã¹ã«ã©ãŒå€ïŒããªãã¡ããµãã²ãŒãã³ãŒããã€ã³ãã§ãªãä»»æã®Unicodeã³ãŒããã€ã³ãïŒãæå³ããããã«äœ¿çšãããã[UNICODE]
æååã®ã³ãŒãåäœé·ãã¯ããã®æååã®ã³ãŒãåäœã®æ°ã§ããã
ãã®è€éãã¯ãUnicodeæåã®èгç¹ãããããã16ãããïŒUTF-16ïŒã³ãŒãåäœã®èгç¹ã§DOM APIãå®çŸ©ããããã®æŽå²çãªæ±ºå®ã«ç±æ¥ããã
ãã®ä»æ§ã«ãããŠããã¹ãŠã®å³ãäŸã泚ã¯éèŠç¯çã§ãããéèŠç¯çãšæç€ºãããç¯ãåæ§ã§ããããã®ä»æ§ã«ããããã®ä»ãã¹ãŠã¯èŠç¯çã§ããã
ãã®ææžã§ã®èŠç¯éšåã«ãããŠããŒã¯ãŒã"MUST"ã"MUST NOT"ã"REQUIRED"ã "SHOULD", "SHOULD NOT", "MAY", and "OPTIONAL" in the normative parts of this document are to be interpreted as described in RFC2119. ãã®ææžã®èŠç¯éšåã§ã®ããŒã¯ãŒã"OPTIONALLY"ã¯ã"MAY"ãŸãã¯"OPTIONAL"ãšããŠã®æå³ãšåäžã«è§£éããããèªã¿ãããã®ããã«ããããã®åèªã¯æ¬ä»æ§ã«ãããŠå€§æåã®ã¿ã§åºçŸããªãã[RFC2119]
Requirements phrased in the imperative as part of algorithms (such as "strip any leading space characters" or "return false and abort these steps") are to be interpreted with the meaning of the key word ("must", "should", "may", etc) used in introducing the algorithm.
For example, were the spec to say:
To eat an orange, the user must: 1. Peel the orange. 2. Separate each slice of the orange. 3. Eat the orange slices.
...it would be equivalent to the following:
To eat an orange: 1. The user must peel the orange. 2. The user must separate each slice of the orange. 3. The user must eat the orange slices.
Here the key word is "must".
The former (imperative) style is generally preferred in this specification for stylistic reasons.
Conformance requirements phrased as algorithms or specific steps may be implemented in any manner, so long as the end result is equivalent. (In particular, the algorithms defined in this specification are intended to be easy to follow, and not intended to be performant.)
This specification describes the conformance criteria for user agents (relevant to implementors) and documents (relevant to authors and authoring tool implementors).
Conforming documents are those that comply with all the conformance criteria for documents. For readability, some of these conformance requirements are phrased as conformance requirements on authors; such requirements are implicitly requirements on documents: by definition, all documents are assumed to have had an author. (In some cases, that author may itself be a user agent â such user agents are subject to additional rules, as explained below.)
For example, if a requirement states that "authors must not use the foobar element", it would imply that documents are not allowed to contain elements
named foobar.
There is no implied relationship between document conformance requirements and implementation conformance requirements. User agents are not free to handle non-conformant documents as they please; the processing model described in this specification applies to implementations regardless of the conformity of the input documents.
User agents fall into several (overlapping) categories with different conformance requirements.
Web browsers that support the XHTML syntax must process elements and attributes from the HTML namespace found in XML documents as described in this specification, so that users can interact with them, unless the semantics of those elements have been overridden by other specifications.
A conforming XHTML processor would, upon finding an XHTML script
element in an XML document, execute the script contained in that element. However, if the
element is found within a transformation expressed in XSLT (assuming the user agent also
supports XSLT), then the processor would instead treat the script element as an
opaque element that forms part of the transform.
Web browsers that support the HTML syntax must process documents labeled with an HTML MIME type as described in this specification, so that users can interact with them.
Unless explicitly stated, specifications that override the semantics of HTML
elements do not override the requirements on DOM objects representing those elements. For
example, the script element in the example above would still implement the
HTMLScriptElement interface.
User agents that process HTML and XHTML documents purely to render non-interactive versions of them must comply to the same conformance criteria as Web browsers, except that they are exempt from requirements regarding user interaction.
Typical examples of non-interactive presentation user agents are printers (static UAs) and overhead displays (dynamic UAs). It is expected that most static non-interactive presentation user agents will also opt to lack scripting support.
A non-interactive but dynamic presentation UA would still execute scripts, allowing forms to be dynamically submitted, and so forth. However, since the concept of "focus" is irrelevant when the user cannot interact with the document, the UA would not need to support any of the focus-related DOM APIs.
User agents, whether interactive or not, may be designated (possibly as a user option) as supporting the suggested default rendering defined by this specification.
This is not required. In particular, even user agents that do implement the suggested default rendering are encouraged to offer settings that override this default to improve the experience for the user, e.g. changing the color contrast, using different focus styles, or otherwise making the experience more accessible and usable to the user.
User agents that are designated as supporting the suggested default rendering must, while so designated, implement the rules in the rendering section that that section defines as the behavior that user agents are expected to implement.
Implementations that do not support scripting (or which have their scripting features disabled entirely) are exempt from supporting the events and DOM interfaces mentioned in this specification. For the parts of this specification that are defined in terms of an events model or in terms of the DOM, such user agents must still act as if events and the DOM were supported.
Scripting can form an integral part of an application. Web browsers that do not support scripting, or that have scripting disabled, might be unable to fully convey the author's intent.
Conformance checkers must verify that a document conforms to the applicable conformance
criteria described in this specification. Automated conformance checkers are exempt from
detecting errors that require interpretation of the author's intent (for example, while a
document is non-conforming if the content of a blockquote element is not a quote,
conformance checkers running without the input of human judgement do not have to check that
blockquote elements only contain quoted material).
Conformance checkers must check that the input document conforms when parsed without a browsing context (meaning that no scripts are run, and that the parser's scripting flag is disabled), and should also check that the input document conforms when parsed with a browsing context in which scripts execute, and that the scripts never cause non-conforming states to occur other than transiently during script execution itself. (This is only a "SHOULD" and not a "MUST" requirement because it has been proven to be impossible. [COMPUTABLE])
The term "HTML validator" can be used to refer to a conformance checker that itself conforms to the applicable requirements of this specification.
XML DTDs cannot express all the conformance requirements of this specification. Therefore, a validating XML processor and a DTD cannot constitute a conformance checker. Also, since neither of the two authoring formats defined in this specification are applications of SGML, a validating SGML system cannot constitute a conformance checker either.
To put it another way, there are three types of conformance criteria:
A conformance checker must check for the first two. A simple DTD-based validator only checks for the first class of errors and is therefore not a conforming conformance checker according to this specification.
Applications and tools that process HTML and XHTML documents for reasons other than to either render the documents or check them for conformance should act in accordance with the semantics of the documents that they process.
A tool that generates document outlines but increases the nesting level for each paragraph and does not increase the nesting level for each section would not be conforming.
Authoring tools and markup generators must generate conforming documents. Conformance criteria that apply to authors also apply to authoring tools, where appropriate.
Authoring tools are exempt from the strict requirements of using elements only for their specified purpose, but only to the extent that authoring tools are not yet able to determine author intent. However, authoring tools must not automatically misuse elements or encourage their users to do so.
For example, it is not conforming to use an address element for
arbitrary contact information; that element can only be used for marking up contact information
for the author of the document or section. However, since an authoring tool is likely unable to
determine the difference, an authoring tool is exempt from that requirement. This does not mean,
though, that authoring tools can use address elements for any block of italics text
(for instance); it just means that the authoring tool doesn't have to verify that when the user
uses a tool for inserting contact information for a section, that the user really is doing that
and not inserting something else instead.
In terms of conformance checking, an editor has to output documents that conform to the same extent that a conformance checker will verify.
When an authoring tool is used to edit a non-conforming document, it may preserve the conformance errors in sections of the document that were not edited during the editing session (i.e. an editing tool is allowed to round-trip erroneous content). However, an authoring tool must not claim that the output is conformant if errors have been so preserved.
Authoring tools are expected to come in two broad varieties: tools that work from structure or semantic data, and tools that work on a What-You-See-Is-What-You-Get media-specific editing basis (WYSIWYG).
The former is the preferred mechanism for tools that author HTML, since the structure in the source information can be used to make informed choices regarding which HTML elements and attributes are most appropriate.
However, WYSIWYG tools are legitimate. WYSIWYG tools should use elements they know are
appropriate, and should not use elements that they do not know to be appropriate. This might in
certain extreme cases mean limiting the use of flow elements to just a few elements, like
div, b, i, and span and making liberal use
of the style attribute.
All authoring tools, whether WYSIWYG or not, should make a best effort attempt at enabling users to create well-structured, semantically rich, media-independent content.
User agents may impose implementation-specific limits on otherwise
unconstrained inputs, e.g. to prevent denial of service attacks, to guard against running out of
memory, or to work around platform-specific limitations.
For compatibility with existing content and prior specifications, this specification describes two authoring formats: one based on XML (referred to as the XHTML syntax), and one using a custom format inspired by SGML (referred to as the HTML syntax). Implementations must support at least one of these two formats, although supporting both is encouraged.
Some conformance requirements are phrased as requirements on elements, attributes, methods or objects. Such requirements fall into two categories: those describing content model restrictions, and those describing implementation behavior. Those in the former category are requirements on documents and authoring tools. Those in the second category are requirements on user agents. Similarly, some conformance requirements are phrased as requirements on authors; such requirements are to be interpreted as conformance requirements on the documents that authors produce. (In other words, this specification does not distinguish between conformance criteria on authors and conformance criteria on documents.)
This specification relies on several other underlying specifications.
The Unicode character set is used to represent textual data, and the Encoding standard defines requirements around character encodings. [UNICODE]
This specification introduces terminology based on the terms defined in those specifications, as described earlier.
The following terms are used as defined in the Encoding specification: [ENCODING]
The UTF-8 decoder is distinct from the UTF-8 decode algorithm. The latter first strips a Byte Order Mark (BOM), if any, and then invokes the former.
The decoder algorithm may produce an error, referred to in this specification as a decoder error.
For readability, character encodings are sometimes referenced in this specification with a case that differs from the canonical case given in the encoding standard. (For example, "UTF-16LE" instead of "utf-16le".)
Implementations that support the XHTML syntax must support some version of XML, as well as its corresponding namespaces specification, because that syntax uses an XML serialization with namespaces. [XML] [XMLNS]
The following terms are defined in the URL standard: [URL]
URLUtils interface
href attribute
protocol attribute
URLUtils
URLUtils
URLUtils
URLUtils object
URLUtils object
URLUtils object
The following terms are defined in the Cookie specification: [COOKIES]
The following terms are defined in the CORS specification: [CORS]
The IDL blocks in this specification are conforming IDL fragments as defined by the WebIDL specification. [WEBIDL]
The terms supported property indices, determine the value of an indexed property, support named properties, supported property names, determine the value of a named property, platform array objects, and read only (when applied to arrays) are used as defined in the Web IDL specification. The algorithm to convert a DOMString to a sequence of Unicode characters is similarly that defined in the Web IDL specification.
When this specification requires a user agent to create a Date object
representing a particular time (which could be the special value Not-a-Number), the milliseconds
component of that time, if any, must be truncated to an integer, and the time value of the newly
created Date object must represent the resulting truncated time.
For instance, given the time 23045 millionths of a second after 01:00 UTC on
January 1st 2000, i.e. the time 2000-01-01T00:00:00.023045Z, then the Date object
created representing that time would represent the same time as that created representing the
time 2000-01-01T00:00:00.023Z, 45 millionths earlier. If the given time is NaN, then the result
is a Date object that represents a time value NaN (indicating that the object does
not represent a specific instant of time).
Some parts of the language described by this specification only support JavaScript as the underlying scripting language. [ECMA262]
The term "JavaScript" is used to refer to ECMA262, rather than the official term
ECMAScript, since the term JavaScript is more widely known. Similarly, the MIME
type used to refer to JavaScript in this specification is text/javascript, since that is the most commonly used type, despite it being an officially obsoleted type according to RFC 4329. [RFC4329]
The term JavaScript global environment refers to the global environment concept defined in the ECMAScript specification.
The ECMAScript SyntaxError exception is also
defined in the ECMAScript specification. [ECMA262]
The Document Object Model (DOM) is a representation â a model â of a document and its content. The DOM is not just an API; the conformance criteria of HTML implementations are defined, in this specification, in terms of operations on the DOM. [DOM]
Implementations must support DOM and the events defined in DOM Events, because this specification is defined in terms of the DOM, and some of the features are defined as extensions to the DOM interfaces. [DOM] [DOMEVENTS]
In particular, the following features are defined in the DOM specification: [DOM]
Attr interfaceComment interfaceDOMImplementation interfaceDocument interfaceDocumentFragment interfaceDocumentType interfaceDOMException interfaceChildNode interfaceElement interfaceNode interfaceNodeList interfaceProcessingInstruction interfaceText interfaceHTMLCollection interfaceitem() method
DOMTokenList interfaceDOMSettableTokenList interfacecreateDocument() methodcreateHTMLDocument() methodcreateElement() methodcreateElementNS() methodgetElementById() methodinsertBefore() methodownerDocument attributechildNodes attributelocalName attributeparentNode attributenamespaceURI attributetagName attributeid attributetextContent attributeEvent interfaceEventTarget interfaceEventInit dictionary typetarget attributeisTrusted attributeEventTargetDocumentNode, and the concept of cloning steps used by that algorithmMutationObserver interfaceMutationObserver scripting environment conceptMutationObserver objects algorithmThe term throw in this specification is used as defined in the DOM specification.
The following DOMException types are defined in the DOM specification: [DOM]
IndexSizeErrorHierarchyRequestErrorWrongDocumentErrorInvalidCharacterErrorNoModificationAllowedErrorNotFoundErrorNotSupportedErrorInvalidStateErrorSyntaxErrorInvalidModificationErrorNamespaceErrorInvalidAccessErrorSecurityErrorNetworkErrorAbortErrorURLMismatchErrorQuotaExceededErrorTimeoutErrorInvalidNodeTypeErrorDataCloneErrorFor example, to throw a TimeoutError exception, a user
agent would construct a DOMException object whose type was the string "TimeoutError" (and whose code was the number 23, for legacy reasons) and
actually throw that object as an exception.
The URL associated with a Document, as
defined in the DOM specification, is referred to in this specification as the document's
address.
The following features are defined in the DOM Events specification: [DOMEVENTS]
MouseEvent interfaceMouseEventInit dictionary typeUIEvent interface's detail attributeclick eventThis specification sometimes uses the term name to refer to the event's type; as in, "an event named click" or "if the event name is keypress". The terms "name" and "type" for events
are synonymous.
The following features are defined in the DOM Parsing and Serialization specification: [DOMPARSING]
innerHTMLouterHTMLUser agents are also encouraged to implement the
features described in the HTML Editing APIs and
UndoManager and DOM Transaction
specifications.
[EDITING]
[UNDO]
The following parts of the Fullscreen specification are referenced from this specification to define how the Fullscreen API interacts with the sandboxing features in HTML: [FULLSCREEN]
requestFullscreen()
The ArrayBuffer and ArrayBufferView interfaces and underlying concepts
from the Typed Array Specification are used for several features in this specification. The
Uint8ClampedArray interface type is specifically used in the definition of the
canvas element's 2D API. [TYPEDARRAY]
This specification uses the following features defined in the File API specification: [FILEAPI]
BlobFileFileListBlob.close()Blob.typeThis specification references the XMLHttpRequest specification in some non-normative notes and examples. The following features and terms are defined in the XMLHttpRequest specification: [XHR]
XMLHttpRequest
This specification references the Progress Events specification to describe how the two
specifications interact and to use its ProgressEvent features. The following
features and terms are defined in the Progress Events specification: [PROGRESS-EVENTS]
ProgressEvent
The following terms are defined in Server-Sent Events: [EVENTSOURCE]
EventSource
Implementations must support the Media Queries language. [MQ]
While support for CSS as a whole is not required of implementations of this specification (though it is encouraged, at least for Web browsers), some features are defined in terms of specific CSS requirements.
In particular, some features require that a string be parsed as a CSS <color> value. When parsing a CSS value, user agents are required by the CSS specifications to apply some error handling rules. These apply to this specification also. [CSSCOLOR] [CSS]
For example, user agents are required to close all open constructs upon
finding the end of a style sheet unexpectedly. Thus, when parsing the string "rgb(0,0,0" (with a missing close-parenthesis) for a color value, the close
parenthesis is implied by this error handling rule, and a value is obtained (the color 'black').
However, the similar construct "rgb(0,0," (with both a missing parenthesis
and a missing "blue" value) cannot be parsed, as closing the open construct does not result in a
viable value.
The term CSS element reference identifier is used as defined in the CSS Image Values and Replaced Content specification to define the API that declares identifiers for use with the CSS 'element()' function. [CSSIMAGES]
Similarly, the term provides a paint source is used as defined in the CSS Image Values and Replaced Content specification to define the interaction of certain HTML elements with the CSS 'element()' function. [CSSIMAGES]
The term default object size is also defined in the CSS Image Values and Replaced Content specification. [CSSIMAGES]
Support for the CSS Object Model is required for implementations that support scripting. The following features and terms are defined in the CSSOM specifications: [CSSOM] [CSSOMVIEW]
ScreenLinkStyleCSSStyleDeclarationcssText attribute of CSSStyleDeclarationStyleSheetsheetdisabledThe term CSS styling attribute is defined in the CSS Style Attributes specification. [CSSATTR]
The CanvasRenderingContext2D object's use of fonts depends on the features
described in the CSS Fonts and Font Load Events specifications, including in particular
FontLoader. [CSSFONTS] [CSSFONTLOAD]
The following interface is defined in the SVG specification: [SVG]
SVGMatrix
The following interface is defined in the WebGL specification: [WEBGL]
WebGLRenderingContext
Implementations may support WebVTT as a text track format for subtitles, captions, chapter titles, metadata, etc, for media resources. [WEBVTT]
The following terms, used in this specification, are defined in the WebVTT specification:
The following terms are defined in the WebSocket protocol specification: [WSP]
The following terms are defined in Web Workers: [WEBWORKERS]
Worker
The following terms are defined in 2D Context: [CANVAS2D]
The following terms are defined in Web Messaging: [WEBMSG]
MessagePort
The terms strong native semantics is used as defined in the ARIA specification. The term default implicit ARIA semantics has the same meaning as the term implicit WAI-ARIA semantics as used in the ARIA specification. [ARIA]
The role and aria-*
attributes are defined in the ARIA specification. [ARIA]
This specification does not require support of any particular network protocol, style sheet language, scripting language, or any of the DOM specifications beyond those required in the list above. However, the language described by this specification is biased towards CSS as the styling language, JavaScript as the scripting language, and HTTP as the network protocol, and several features assume that those languages and protocols are in use.
A user agent that implements the HTTP protocol must implement the Web Origin Concept specification and the HTTP State Management Mechanism specification (Cookies) as well. [HTTP] [ORIGIN] [COOKIES]
This specification might have certain additional requirements on character encodings, image formats, audio formats, and video formats in the respective sections.
ãŠãŒã¶ãŒãšãŒãžã§ã³ãããã®ä»æ§ãæ¡åŒµãããã³ããŒåºæã®ããããã£ãŒãåŒ·ãæšå¥šããªããããããããšã¯ãç¹å®ã®ãŠãŒã¶ãŒãšãŒãžã§ã³ãã®ãŠãŒã¶ãŒã ããåœè©²ã®ã³ã³ãã³ãã«ã¢ã¯ã»ã¹ããããšãã§ããçžäºéçšæ§ãæžå°ãããŠãŒã¶ãŒããŒã¹ãåæããã®ã§ãææžã¯ãã®ãããªæ¡åŒµã䜿çšããŠã¯ãªããªãã
If such extensions are nonetheless needed, e.g. for experimental purposes, then vendors are strongly urged to use one of the following extension mechanisms:
For markup-level features that can be limited to the XML serialization and need not be supported in the HTML serialization, vendors should use the namespace mechanism to define custom namespaces in which the non-standard elements and attributes are supported.
For markup-level features that are intended for use with the HTML syntax,
extensions should be limited to new attributes of the form "x-vendor-feature", where vendor is a
short string that identifies the vendor responsible for the extension, and feature is the name of the feature. New element names should not be created.
Using attributes for such extensions exclusively allows extensions from multiple vendors to
co-exist on the same element, which would not be possible with elements. Using the "x-vendor-feature" form allows extensions
to be made without risk of conflicting with future additions to the specification.
For instance, a browser named "FerretBrowser" could use "ferret" as a vendor prefix, while a browser named "Mellblom Browser" could use "mb". If both of these browsers invented extensions that turned elements into scratch-and-sniff areas, an author experimenting with these features could write:
<p>This smells of lemons!
<span x-ferret-smellovision x-ferret-smellcode="LEM01"
x-mb-outputsmell x-mb-smell="lemon juice"></span></p>
Attribute names beginning with the two characters "x-" are reserved for
user agent use and are guaranteed to never be formally added to the HTML language. For
flexibility, attributes names containing underscores (the U+005F LOW LINE character) are also
reserved for experimental purposes and are guaranteed to never be formally added to the HTML
language.
Pages that use such attributes are by definition non-conforming.
For DOM extensions, e.g. new methods and IDL attributes, the new members should be prefixed by vendor-specific strings to prevent clashes with future versions of this specification.
For events, experimental event types should be prefixed with vendor-specific strings.
For example, if a user agent called "Pleasold" were to add an event to indicate when
the user is going up in an elevator, it could use the prefix "pleasold" and
thus name the event "pleasoldgoingup", possibly with an event handler
attribute named "onpleasoldgoingup".
All extensions must be defined so that the use of extensions neither contradicts nor causes the non-conformance of functionality defined in the specification.
For example, while strongly discouraged from doing so, an implementation "Foo Browser" could
add a new IDL attribute "fooTypeTime" to a control's DOM interface that
returned the time it took the user to select the current value of a control (say). On the other
hand, defining a new control that appears in a form's elements array would be in violation of the above requirement,
as it would violate the definition of elements given in
this specification.
When adding new reflecting IDL attributes corresponding to content
attributes of the form "x-vendor-feature", the IDL attribute should be named "vendorFeature" (i.e. the "x" is
dropped from the IDL attribute's name).
ãã®ä»æ§ã«ãã³ããŒäžç«ã®æ¡åŒµãå¿ èŠã«ãªã£ãå Žåããã®ä»æ§ãç¶æ³ã«å¿ããŠæŽæ°ããããããŸãã¯æ¡åŒµä»æ§ããã®ä»æ§ã®èŠæ±ãäžæžããããããã®ããããã§ãããWhen someone applying this specification to their activities decides that they will recognize the requirements of such an extension specification, it becomes an applicable specification.
ææžã«å¯Ÿããé©åçšèªã¯ããã®ãããªé©çšå¯èœãªä»æ§ã«ãã£ãŠå°å ¥ããã倿Žã®æ§è³ªãããã³ã³ã³ãã³ããšæå³ãããææžã®è§£éã«äŸåãããé©çšå¯èœãªä»æ§ã¯ãæ°ããææžã³ã³ãã³ãïŒããšãã°foobarèŠçŽ ïŒãå®çŸ©ããŠããããç¹å®ã®ã»ãã®é©åã³ã³ãã³ããçŠæ¢ããŠãããïŒããšãã°<TABLE>ã®äœ¿çšãçŠæ¢ããïŒããã®ä»æ§ã§å®çŸ©ãããã³ã³ãã³ãã«å¯Ÿããã»ãã³ãã£ãã¯ãDOMã®å€æããŸãã¯åŠçèŠåã倿ŽããŠããããææžããé©çšå¯èœãªä»æ§ã®çšéã«äŸåããªãé©åHTML5ææžã§ãããã©ããïŒäžããããé©åHTML5ææžã®æ§æããã³ã»ãã³ãã£ãã¯ããé©çšå¯èœãªä»æ§ã®äœ¿çšã«ãã£ãŠå€æŽãããªãå Žåããã®ææžã¯é©åHTML5ææžã®ãŸãŸã§ãããäžããããïŒã»ãã®é©åïŒææžã®ã»ãã³ãã£ãã¯ãŸãã¯åŠçããé©çšå¯èœãªä»æ§ã®äœ¿çšã«ãã£ãŠå€æŽãããå Žåãããã¯é©åHTML5ææžã§ã¯ãªãããã®ãããªå Žåããã®é©çšå¯èœãªä»æ§ã¯ãé©åçšèªãå®çŸ©ãã¹ãã§ããã
As a suggested but not required convention, such specifications might define conformance terminology such as: "Conforming HTML5+XXX document", where XXX is a short name for the applicable specification. ïŒäŸïŒ"é©åHTML5+èªåæ¡åŒµææž"ïŒã
äžã«äžããããèŠåã®çµæã¯ãç¹å®ã®ææ³çã«æ£ããHTML5ææžãé©çšå¯èœãªä»æ§ã®ååšäžã§é©åHTML5ææžã§ãªããããããªããïŒäŸïŒé©çšå¯èœãªä»æ§ãã²ãšãŸãšãŸãã®ä»å±åã®ããã«<table>ãå®çŸ©ããâããšãèŠçŽ ãHTML5ã®æ§æçã«æ£ããçããŠãããã®ä»æ§æžã«æžãããŠãã€<table>èŠçŽ ãå«ãææžã¯ãé©åHTML5ææžã§ã¯ãªããïŒ
User agents must treat elements and attributes that they do not understand as semantically neutral; leaving them in the DOM (for DOM processors), and styling them according to CSS (for CSS processors), but not inferring any meaning from them.
When support for a feature is disabled (e.g. as an emergency measure to mitigate a security problem, or to aid in development, or for performance reasons), user agents must act as if they had no support for the feature whatsoever, and as if the feature was not mentioned in this specification. For example, if a particular feature is accessed via an attribute in a Web IDL interface, the attribute itself would be omitted from the objects that implement that interface â leaving the attribute on the object but making it return null or throw an exception is insufficient.
Implementations of XPath 1.0 that operate on HTML
documents parsed or created in the manners described in this specification (e.g. as part of
the document.evaluate() API) must act as if the following edit was applied
to the XPath 1.0 specification.
First, remove this paragraph:
A QName in the node test is expanded into an expanded-name using the namespace declarations from the expression context. This is the same way expansion is done for element type names in start and end-tags except that the default namespace declared with
xmlnsis not used: if the QName does not have a prefix, then the namespace URI is null (this is the same way attribute names are expanded). It is an error if the QName has a prefix for which there is no namespace declaration in the expression context.
Then, insert in its place the following:
A QName in the node test is expanded into an expanded-name using the namespace declarations from the expression context. If the QName has a prefix, then there must be a namespace declaration for this prefix in the expression context, and the corresponding namespace URI is the one that is associated with this prefix. It is an error if the QName has a prefix for which there is no namespace declaration in the expression context.
If the QName has no prefix and the principal node type of the axis is element, then the default element namespace is used. Otherwise if the QName has no prefix, the namespace URI is null. The default element namespace is a member of the context for the XPath expression. The value of the default element namespace when executing an XPath expression through the DOM3 XPath API is determined in the following way:
- If the context node is from an HTML DOM, the default element namespace is "http://www.w3.org/1999/xhtml".
- Otherwise, the default element namespace URI is null.
This is equivalent to adding the default element namespace feature of XPath 2.0 to XPath 1.0, and using the HTML namespace as the default element namespace for HTML documents. It is motivated by the desire to have implementations be compatible with legacy HTML content while still supporting the changes that this specification introduces to HTML regarding the namespace used for HTML elements, and by the desire to use XPath 1.0 rather than XPath 2.0.
This change is a willful violation of the XPath 1.0 specification, motivated by desire to have implementations be compatible with legacy content while still supporting the changes that this specification introduces to HTML regarding which namespace is used for HTML elements. [XPATH10]
XSLT 1.0 processors outputting to a DOM when the output method is "html" (either explicitly or via the defaulting rule in XSLT 1.0) are affected as follows:
If the transformation program outputs an element in no namespace, the processor must, prior to constructing the corresponding DOM element node, change the namespace of the element to the HTML namespace, ASCII-lowercase the element's local name, and ASCII-lowercase the names of any non-namespaced attributes on the element.
This requirement is a willful violation of the XSLT 1.0 specification, required because this specification changes the namespaces and case-sensitivity rules of HTML in a manner that would otherwise be incompatible with DOM-based XSLT transformations. (Processors that serialize the output are unaffected.) [XSLT10]
This specification does not specify precisely how XSLT processing interacts with the HTML
parser infrastructure (for example, whether an XSLT processor acts as if it puts any
elements into a stack of open elements). However, XSLT processors must stop
parsing if they successfully complete, and must set the current document
readiness first to "interactive" and then to "complete" if they are aborted.
This specification does not specify how XSLT interacts with the navigation algorithm, how it fits in with the event loop, nor how error pages are to be handled (e.g. whether XSLT errors are to replace an incremental XSLT output, or are rendered inline, etc).
There are also additional non-normative comments regarding the interaction of XSLT
and HTML in the script element section, and of
XSLT, XPath, and HTML in the template element
section.
倧æåã»å°æååºå¥ã«ãããŠ2ã€ã®æååãæ¯èŒããããšã¯ãæ£ç¢ºã«ã³ãŒããã€ã³ããæ¯èŒããããšãæå³ããã
ASCII倧æåã»å°æååºå¥ã«ãããŠ2ã€ã®æååãæ¯èŒããæ¹æ³ã¯ãã³ãŒããã€ã³ãããšã«æ£ç¢ºã«æ¯èŒããããšãæå³ããU+0041ããU+005AãŸã§ã®ç¯å²ïŒããªãã¡LATIN CAPITAL LETTER AããLATIN CAPITAL LETTER ZãŸã§ïŒãé€ããŠãU+0061ããU+007AãŸã§ã®ç¯å²ïŒããªãã¡LATIN SMALL LETTER AããLATIN SMALL LETTER ZãŸã§ïŒã«ãããŠäžèŽããæåãäžèŽãããšã¿ãªãããã
äºææ§å€§æåã»å°æåäžåºå¥ã§2ã€ã®æååãæ¯èŒããæ¹æ³ã¯ãèšèªåºæã®æçŽãïŒtailoringïŒãªãã§ã2ã€ã®æååãæ¯èŒããããã«Unicodeäºææ§å€§æåã»å°æåäžåºå¥äžèŽæäœã䜿çšããããšãæå³ããã[UNICODE]
æèšãããå Žåãé€ããæååã®æ¯èŒã¯å€§æåã»å°æååºå¥ã®æ¹æ³ã§å®è¡ãããªããã°ãªããªãã
Converting a string to ASCII uppercase means replacing all characters in the range U+0061 to U+007A (i.e. LATIN SMALL LETTER A to LATIN SMALL LETTER Z) with the corresponding characters in the range U+0041 to U+005A (i.e. LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z).
Converting a string to ASCII lowercase means replacing all characters in the range U+0041 to U+005A (i.e. LATIN CAPITAL LETTER A to LATIN CAPITAL LETTER Z) with the corresponding characters in the range U+0061 to U+007A (i.e. LATIN SMALL LETTER A to LATIN SMALL LETTER Z).
patternãsæªæºã§ãã€patternã®é·ãã«sãåãæšãŠããäºãã«ããããšããŠã®2ã€ã®æååã®ãŸãŸã«ããå Žåãæååã®patternã¯ãæååsãšæ¥é èŸäžèŽã§ããã
æ¥ä»ãæ°åãªã©ãHTMLã«ã¯ç¹å®ã®ããŒã¿åãåãå ¥ããããŸããŸãªç®æãããããã®ç¯ã§ã¯ãããã圢åŒã®å 容ã®é©ååºæºãäœãããããŠã©ã®ããã«è§£æãããã説æããã
Implementors are strongly urged to carefully examine any third-party libraries they might consider using to implement the parsing of syntaxes described below. For example, date libraries are likely to implement error handling behavior that differs from what is required in this specification, since error-handling behavior is often not defined in specifications that describe date syntaxes similar to those used in this specification, and thus implementations tend to vary greatly in how they handle errors.
ãã®ä»æ§ã®çšéã«ãããŠãç©ºçœæåã¯ãU+0020 SPACEã"tab"ïŒU+0009ïŒã"LF"ïŒU+000AïŒã"FF"ïŒU+000CïŒã"CR"ïŒU+000DïŒã§ããã
空çœé¡æåã¯ãUnicodeã®PropList.txtããŒã¿ãã¡ã€ã«ã§Unicodeããããã£ãŒ"White_Space"ãæã€ãã®ã§ããã[UNICODE]
ããã¯Unicode.txtããŒã¿ãã¡ã€ã«ã§ã®"Bidi_Class"ããããã£ãŒã®"White_Space"å€ïŒ"WS"ãšç¥ãããïŒãšæ··åãããã¹ãã§ãªãã
å¶åŸ¡æåãšã¯ãUnicodeã®UnicodeData.txtããŒã¿ãã¡ã€ã«ã§Unicodeã®"White_Space"ããããã£ãŒãæã€ãã®ã§ããã[UNICODE]
倧æåã®ASCIIæåã¯ãç¯å²å€§æåã®ASCIIæåã«ãããæåã§ããã
å°æåã®ASCIIæåã¯ãç¯å²å°æåã®ASCIIæåã«ãããæåã§ããã
ASCIIæ°åã¯ãç¯å²ASCIIæ°åã«ãããæåã§ããã
è±æ°åã®ASCIIæåã¯ã倧æåã®ASCIIæåãå°æåã®ASCIIæåããŸãã¯ASCIIæ°åã®ããããã§ããã
ASCII16鲿°åã¯ãASCII æ°åãU+0041 LATIN CAPITAL LETTER AããU+0046 LATIN CAPITAL LETTERãŸã§ãããã³U+0061 LATIN SMALL LETTER AããU+0066 LATIN SMALL LETTER FãŸã§ã®ç¯å²ã®æåã§ããã
倧æåã®ASCII16鲿°åã¯ãç¯å²ASCIIæ°åããã³U+0041 LATIN CAPITAL LETTER AããU+0046 LATIN CAPITAL LETTER FãŸã§ã®ã¿ã®æåã§ããã
å°æåã®ASCII16鲿°åã¯ãç¯å²ASCIIæ°åããã³U+0061 LATIN SMALL LETTER AããU+0066 LATIN SMALL LETTER FãŸã§ã®ã¿ã®æåã§ããã
Some of the micro-parsers described below follow the pattern of having an input variable that holds the string being parsed, and having a position variable pointing at the next character to parse in input.
For parsers based on this pattern, a step that requires the user agent to collect a sequence of characters means that the following algorithm must be run, with characters being the set of characters that can be collected:
Let input and position be the same variables as those of the same name in the algorithm that invoked these steps.
Let result be the empty string.
While position doesn't point past the end of input and the character at position is one of the characters, append that character to the end of result and advance position to the next character in input.
Return result.
The step skip whitespace means that the user agent must collect a sequence of characters that are space characters. The collected characters are not used.
When a user agent is to strip line breaks from a string, the user agent must remove any "LF" (U+000A) and "CR" (U+000D) characters from that string.
When a user agent is to strip leading and trailing whitespace from a string, the user agent must remove all space characters that are at the start or end of the string.
When a user agent is to strip and collapse whitespace in a string, it must replace any sequence of one or more consecutive space characters in that string with a single U+0020 SPACE character, and then strip leading and trailing whitespace from that string.
When a user agent has to strictly split a string on a particular delimiter character delimiter, it must use the following algorithm:
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let tokens be an ordered list of tokens, initially empty.
While position is not past the end of input:
Collect a sequence of characters that are not the delimiter character.
Append the string collected in the previous step to tokens.
Advance position to the next character in input.
Return tokens.
For the special cases of splitting a string on spaces and on commas, this algorithm does not apply (those algorithms also perform whitespace trimming).
ããã€ãã®å±æ§ã¯çåœå±æ§ã§ãããèŠçŽ ã§ã®çåœå±æ§ã®ååšã¯çã®å€ã衚ãã屿§ã®äžåšã¯åœã®å€ã衚ãã
屿§ãååšããå Žåããã®å€ã¯å é ãŸãã¯æ«å°Ÿã®ç©ºçœãªãã§ãç©ºã®æååãŸãã¯å±æ§ã®æ£èŠåã«ASCII倧æåã»å°æåäžåºå¥ã§ãããããå€ã§ãªããã°ãªããªãã
å€"true"ããã³"false"ã¯çåœå±æ§ã§èš±å¯ãããªããåœã®å€ã衚ãããã屿§ã¯å®å šã«çç¥ãããå¿ èŠãããã
checkedããã³disabledãšãªããã§ãã¯ããã¯ã¹ã®äŸã瀺ããcheckedããã³disabled屿§ã¯çåœå±æ§ã§ããã
<label><input type=checkbox checked name=cheese disabled> Cheese</label>
ããã¯æ¬¡ã«æžããããã®ãšç䟡ã§ããã¹ãã§ããïŒ
<label><input type=checkbox checked=checked name=cheese disabled=disabled> Cheese</label>
ã¹ã¿ã€ã«ãæ··åšãããããšãã§ããã以äžã¯äŸç¶ãšããŠç䟡ã§ããïŒ
<label><input type='checkbox' checked name=cheese disabled=""> Cheese</label>
äžéšã®å±æ§ã¯ãæééåã®ããŒã¯ãŒãã®ãããããåãããã«å®çŸ©ãããŠããããã®ãããªå±æ§ã¯åæå±æ§ãšåŒã°ãããããŒã¯ãŒãã¯ãç¹å®ã®ç¶æ ã«ãããã察å¿ä»ããŠå®çŸ©ãããïŒããŒã¯ãŒãã®äžéšãäºãã«å矩èªãšãªãå Žåãè€æ°ã®ããŒã¯ãŒãã¯åãç¶æ ã«å¯Ÿå¿ã¥ãããããå ããŠãäžéšã®ããŒã¯ãŒãã¯äžé©åã§ãããšèšãããšãã§ãããããã¯ãæŽå²çãªçç±ã®ããã ãã®ä»æ§ã§ããïŒãããã«ã2ã€ã®ããã©ã«ãç¶æ ãæããããšãã§ããã1ã€ã¯åŠ¥åœã§ãªãå€ã®ããã©ã«ãã§ããããã1ã€ã¯æ¬ èœããå€ã®ããã©ã«ãã§ããã
åæå±æ§ãæå®ãããå Žåã屿§å€ã¯ãå è¡ãŸãã¯åŸç¶ã®ç©ºçœãªãã§ãäžé©åã§ãªããšãããäžããããããŒã¯ãŒãã®ãããããšASCII倧æåã»å°æåäžåºå¥ã§äžèŽããªããã°ãªããªãã
屿§ãæå®ãããéã«ããã®å€ãäžããããããŒã¯ãŒãã®ãããããšASCII倧æåã»å°æåäžåºå¥ã§äžèŽããå Žåã屿§ã®ããŒã¯ãŒãã®ç¶æ ã¯ã屿§ã衚ãç¶æ ã§ããã屿§å€ãäžããããããŒã¯ãŒãã®ãããã«ãäžèŽããªããã屿§ã劥åœã§ãªãå€ã®ããã©ã«ããæã€å Žåããã®å±æ§ã¯ãã®ç¶æ ã衚ããããã§ãªããã°ã屿§å€ãããŒã¯ãŒãã®ãããã«ãäžèŽããªããæ¬ èœå€ã®ããã©ã«ãç¶æ å®çŸ©ãååšããå Žåãããã¯å±æ§ã«ãã£ãŠè¡šãããç¶æ ã§ãããããã§ãªããã°ãããã©ã«ãã¯ååšãããäœã衚ããªãç¶æ ãæå³ãã劥åœã§ãªãå€ã§ããã
屿§ãæå®ãããªãéã«ãæ¬ èœå€ã®ããã©ã«ãå®çŸ©ç¶æ ãããå Žåãããã¯ïŒæ¬ èœïŒå±æ§ã«ãã£ãŠè¡šãããç¶æ ã§ãããããã§ãªããã°ã屿§ã®äžåšã¯äœãç¶æ ã衚ããªãããšãæå³ããã
空æååã¯åŠ¥åœãªããŒã¯ãŒããšãªãããã
æååã1ã€ä»¥äžã®ASCII æ°åãä»»æã§æ¥é èŸ"-"ïŒU+002DïŒæåãæã€å Žåãæååã¯åŠ¥åœãªæŽæ°ã§ããã
"-"ïŒU+002DïŒæ¥é èŸãªãã®åŠ¥åœãªæŽæ°ã¯ã10鲿°ã衚ãã"-"ïŒU+002DïŒæ¥é èŸããã®åŠ¥åœãªæŽæ°ã¯ãU+002D HYPHEN-MINUSã«ç¶ã10鲿°ã衚ãããŒãããæžç®ãããã
The rules for parsing integers are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either an integer or an error.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let sign have the value "positive".
If position is past the end of input, return an error.
If the character indicated by position (the first character) is a "-" (U+002D) character:
Otherwise, if the character indicated by position (the first character) is a "+" (U+002B) character:
+"
is ignored, but it is not conforming.)If the character indicated by position is not an ASCII digit, then return an error.
Collect a sequence of characters that are ASCII digits, and interpret the resulting sequence as a base-ten integer. Let value be that integer.
If sign is "positive", return value, otherwise return the result of subtracting value from zero.
1ã€ä»¥äžã®ASCIIæ°åãããªãå Žåãæååã¯åŠ¥åœãªéè² æŽæ°ã§ããã
劥åœãªéè² æŽæ°ã¯ã10鲿°ã§ããæ°ã衚ãã
The rules for parsing non-negative integers are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either zero, a positive integer, or an error.
Let input be the string being parsed.
Let value be the result of parsing input using the rules for parsing integers.
If value is an error, return an error.
If value is less than zero, return an error.
Return value.
次ã®å Žåãæååã¯åŠ¥åœãªæµ®åå°æ°ç¹æ°ã§ããïŒ
劥åœãªæµ®åå°æ°ç¹æ°ã¯ã10ã®çޝä¹ã«ããä»®æ°éšã®ä¹ç®ã«ãã£ãŠåŸããããããã§ä¹ç®ã¯æåã®æ°ã§ããã10鲿°ãšããŠè§£éãããïŒããããã°ãå°æ°ç¹ããã³å°æ°ç¹ã®åŸã®æ°ãå«ã¿ãæååå šäœã"-"ïŒU+002DïŒæåã§å§ãŸãããã³æ°å€ããŒãã§ãªãå Žåãè² æ°ãšããŠä»®æ°éšãè§£éããïŒããŸãããã§ãããããã°ãææ°ã¯Eã®åŸã®æ°åã§ããïŒEãšæ°åãšæ°åã®éã«"-"ïŒU+002DïŒæåãããå Žåãè² æ°ãšããŠè§£éãããæ°åããŒãã§ãªãããŸãã¯ãã®ä»Eãšæ°åã®éã«"+"ïŒU+002BïŒæåãååšããå Žåç¡èŠã§ããïŒãEãååšããªãå Žåãææ°ã¯ãŒããšããŠæ±ãããã
ç¡é倧ããã³éæ°ïŒNaNïŒå€ã¯åŠ¥åœãªæµ®åå°æ°ç¹æ°ã§ã¯ãªãã
The best representation of the number n as a floating-point number is the string obtained from applying the JavaScript operator ToString to n. The JavaScript operator ToString is not uniquely determined. When there are multiple possible strings that could be obtained from the JavaScript operator ToString for a particular value, the user agent must always return the same string for that value (though it may differ from the value used by other user agents).
The rules for parsing floating-point number values are as given in the following algorithm. This algorithm must be aborted at the first step that returns something. This algorithm will return either a number or an error.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let value have the value 1.
Let divisor have the value 1.
Let exponent have the value 1.
If position is past the end of input, return an error.
If the character indicated by position is a U+002D HYPHEN-MINUS character (-):
Otherwise, if the character indicated by position (the first character) is a "+" (U+002B) character:
+"
is ignored, but it is not conforming.)If the character indicated by position is a "." (U+002E), and that is not the last character in input, and the character after the character indicated by position is an ASCII digit, then set value to zero and jump to the step labeled fraction.
If the character indicated by position is not an ASCII digit, then return an error.
Collect a sequence of characters that are ASCII digits, and interpret the resulting sequence as a base-ten integer. Multiply value by that integer.
Fraction: If the character indicated by position is a "." (U+002E), run these substeps:
Advance position to the next character.
If position is past the end of input, or if the character indicated by position is not an ASCII digit, "e" (U+0065), or "E" (U+0045), then jump to the step labeled conversion.
If the character indicated by position is a "e" (U+0065) character or a "E" (U+0045) character, skip the remainder of these substeps.
Fraction loop: Multiply divisor by ten.
Advance position to the next character.
If position is past the end of input, then jump to the step labeled conversion.
If the character indicated by position is an ASCII digit, jump back to the step labeled fraction loop in these substeps.
If the character indicated by position is a "e" (U+0065) character or a "E" (U+0045) character, run these substeps:
Advance position to the next character.
If position is past the end of input, then jump to the step labeled conversion.
If the character indicated by position is a "-" (U+002D) character:
If position is past the end of input, then jump to the step labeled conversion.
Otherwise, if the character indicated by position is a "+" (U+002B) character:
If position is past the end of input, then jump to the step labeled conversion.
If the character indicated by position is not an ASCII digit, then jump to the step labeled conversion.
Collect a sequence of characters that are ASCII digits, and interpret the resulting sequence as a base-ten integer. Multiply exponent by that integer.
Multiply value by ten raised to the exponentth power.
Conversion: Let S be the set of finite IEEE 754 double-precision floating-point values except â0, but with two special values added: 21024 and â21024.
Let rounded-value be the number in S that is closest to value, selecting the number with an even significand if there are two equally close values. (The two special values 21024 and â21024 are considered to have even significands for this purpose.)
If rounded-value is 21024 or â21024, return an error.
Return rounded-value.
The rules for parsing dimension values are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a number greater than or equal to 1.0, or an error; if a number is returned, then it is further categorized as either a percentage or a length.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
If position is past the end of input, return an error.
If the character indicated by position is a U+002B PLUS SIGN character (+), advance position to the next character.
Collect a sequence of characters that are "0" (U+0030) characters, and discard them.
If position is past the end of input, return an error.
If the character indicated by position is not one of "1" (U+0031) to "9" (U+0039), then return an error.
Collect a sequence of characters that are ASCII digits, and interpret the resulting sequence as a base-ten integer. Let value be that number.
If position is past the end of input, return value as a length.
If the character indicated by position is a U+002E FULL STOP character (.):
Advance position to the next character.
If position is past the end of input, or if the character indicated by position is not an ASCII digit, then return value as a length.
Let divisor have the value 1.
Fraction loop: Multiply divisor by ten.
Advance position to the next character.
If position is past the end of input, then return value as a length.
If the character indicated by position is an ASCII digit, return to the step labeled fraction loop in these substeps.
If position is past the end of input, return value as a length.
If the character indicated by position is a "%" (U+0025) character, return value as a percentage.
Return value as a length.
劥åœãªæŽæ°ãªã¹ãã¯ãU+002C COMMAæåã«ãã£ãŠåºåããã倿°ã®åŠ¥åœãªæŽæ°ã§ãããä»ã®æåãæããªãïŒããšãã°ç©ºçœæåã®ãªãïŒãããã«ãäžããããæŽæ°ã®æ°ããŸãã¯èš±å¯ãããå€ã®ç¯å²ã«ã¯å¶éããããããããªãã
The rules for parsing a list of integers are as follows:
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let numbers be an initially empty list of integers. This list will be the result of this algorithm.
If there is a character in the string input at position position, and it is either a U+0020 SPACE, U+002C COMMA, or U+003B SEMICOLON character, then advance position to the next character in input, or to beyond the end of the string if there are no more characters.
If position points to beyond the end of input, return numbers and abort.
If the character in the string input at position position is a U+0020 SPACE, U+002C COMMA, or U+003B SEMICOLON character, then return to step 4.
Let negated be false.
Let value be 0.
Let started be false. This variable is set to true when the parser sees a number or a "-" (U+002D) character.
Let got number be false. This variable is set to true when the parser sees a number.
Let finished be false. This variable is set to true to switch parser into a mode where it ignores characters until the next separator.
Let bogus be false.
Parser: If the character in the string input at position position is:
Follow these substeps:
Follow these substeps:
Follow these substeps:
1,2,x,4".Follow these substeps:
Follow these substeps:
Advance position to the next character in input, or to beyond the end of the string if there are no more characters.
If position points to a character (and not to beyond the end of input), jump to the big Parser step above.
If negated is true, then negate value.
If got number is true, then append value to the numbers list.
Return the numbers list and abort.
The rules for parsing a list of dimensions are as follows. These rules return a list of zero or more pairs consisting of a number and a unit, the unit being one of percentage, relative, and absolute.
Let raw input be the string being parsed.
If the last character in raw input is a "," (U+002C) character, then remove that character from raw input.
Split the string raw input on commas. Let raw tokens be the resulting list of tokens.
Let result be an empty list of number/unit pairs.
For each token in raw tokens, run the following substeps:
Let input be the token.
Let position be a pointer into input, initially pointing at the start of the string.
Let value be the number 0.
Let unit be absolute.
If position is past the end of input, set unit to relative and jump to the last substep.
If the character at position is an ASCII digit, collect a sequence of characters that are ASCII digits, interpret the resulting sequence as an integer in base ten, and increment value by that integer.
If the character at position is a "." (U+002E) character, run these substeps:
Collect a sequence of characters consisting of space characters and ASCII digits. Let s be the resulting sequence.
Remove all space characters in s.
If s is not the empty string, run these subsubsteps:
Let length be the number of characters in s (after the spaces were removed).
Let fraction be the result of interpreting s as a base-ten integer, and then dividing that number by 10length.
Increment value by fraction.
If the character at position is a "%" (U+0025) character, then set unit to percentage.
Otherwise, if the character at position is a U+002A ASTERISK character (*), then set unit to relative.
Add an entry to result consisting of the number given by value and the unit given by unit.
Return the list result.
äžèšã®ã¢ã«ãŽãªãºã ã«ãããŠã幎yearã®æmonthã®æ¥æ°ã¯ïŒmonthã1ã3ã5ã7ã8ã10ã12ãªãã°31ã§ãããmonthã4ã6ã9ã11ãªãã°30ã§ãããmonthã2ãã€yearã400ã§å²ãåããæ°ããŸãã¯yearã4ã§å²ãåããã100ã§å²ãåããªããªãã°29ã§ãããããã§ãªããã°28ã§ãããããã¯ãã°ã¬ãŽãªãªæŠã®é幎ãèæ ®ã«å ¥ããŠããã[GREGORIAN]
ASCIIæ°åããã®ç¯ã§å®çŸ©ãããæ¥ä»ããã³æå»ã®æ§æã§äœ¿çšãããå Žåããããã¯10鲿°ã§è¡šçŸãããã
While the formats described here are intended to be subsets of the corresponding ISO8601 formats, this specification defines parsing rules in much more detail than ISO8601. Implementors are therefore encouraged to carefully examine any date parsing libraries before using them to implement the parsing rules described below; ISO8601 libraries might not parse dates and times in exactly the same manner. [ISO8601]
ãã®ä»æ§ãå çºã°ã¬ãŽãªãªæŠãåç §ããå Žåãããã¯ã1幎ã«é¡ã£ãŠæ¿å ¥ãããçŸä»£ã®ã°ã¬ãŽãªãªæŠãæå³ãããå çºã°ã¬ãŽãªãªæ¥ä»ãšããŠæç€ºçã«åç §ãããå çºã°ã¬ãŽãªãªæŠã§ã®æ¥ä»ã¯ãããšãæŠãåé¡ã®æå»ïŒãŸãã¯å ŽæïŒã§äœ¿çšãããŠããªããšããŠãããã®æŠã䜿çšããŠèª¬æãããã[GREGORIAN]
ãã®ä»æ§ã«ãããŠã¯ã€ã€åœ¢åŒãšããŠã®ã°ã¬ãŽãªãªæŠã®äœ¿çšã¯ã決å®ã«é¢ãã人ã
ã®æåçãªãã€ã¢ã¹ã«èµ·å ããæ£æçãªéžæè¢ã§ãããSee also the section discussing date, time, and number formats in forms (for authors), implemention notes regarding localization of form controls, and the time element.
æã¯ãã¿ã€ã ãŸãŒã³æ å ±ããã³å¹Žãšæãè¶ ããæ¥ä»ãæããªããç¹å®ã®å çºã°ã¬ãŽãªãªæŠããæãã[GREGORIAN]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯ã幎yearããã³æmonthã§è¡šããã劥åœãªææååã§ããïŒ
The rules to parse a month string are as follows. This will return either a year and month, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a month component to obtain year and month. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Return year and month.
The rules to parse a month component, given an input string and a position, are as follows. This will return either a year and a month, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not at least four characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the year.
If year is not a number greater than zero, then fail.
If position is beyond the end of input or if the character at position is not a U+002D HYPHEN-MINUS character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the month.
If month is not a number in the range 1 †month †12, then fail.
Return year and month.
æ¥ä»ã¯ãå¹Žææ¥ãããªãã¿ã€ã ãŸãŒã³æ å ±ãæããªããç¹å®ã®å çºã°ã¬ãŽãªãªæŠãããªãã[GREGORIAN]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯å¹Žyearãæmonthãæ¥dayã§è¡šããã劥åœãªæ¥ä»æååã§ããïŒ
The rules to parse a date string are as follows. This will return either a date, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a date component to obtain year, month, and day. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Let date be the date with year year, month month, and day day.
Return date.
The rules to parse a date component, given an input string and a position, are as follows. This will return either a year, a month, and a day, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Parse a month component to obtain year and month. If this returns nothing, then fail.
Let maxday be the number of days in month month of year year.
If position is beyond the end of input or if the character at position is not a U+002D HYPHEN-MINUS character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the day.
If day is not a number in the range 1 †day †maxday, then fail.
Return year, month, and day.
幎ãªãæ¥ä»ã¯ã°ã¬ã³ãªãªæãšãã®æã®æ¥ãããªããã幎ã䌎ããªãã[GREGORIAN]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯æmonthããã³æ¥dayã§è¡šããã劥åœãªå¹Žãªãæ¥ä»æååã§ããïŒ
èšãæãããšã2æãæå³ããmonthã"02"ã§ããå Žåããããããã®å¹Žã¯é幎ãã®ããã«ãæ¥ã¯29ã§ãã£ãŠãããã
The rules to parse a yearless date string are as follows. This will return either a month and a day, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a yearless date component to obtain month and day. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Return month and day.
The rules to parse a yearless date component, given an input string and a position, are as follows. This will return either a month and a day, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Collect a sequence of characters that are "-" (U+002D) characters. If the collected sequence is not exactly zero or two characters long, then fail.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the month.
If month is not a number in the range 1 †month †12, then fail.
Let maxday be the number of days in month month of any arbitrary leap year (e.g. 4 or 2000).
If position is beyond the end of input or if the character at position is not a U+002D HYPHEN-MINUS character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the day.
If day is not a number in the range 1 †day †maxday, then fail.
Return month and day.
æå»ã¯ãæãåãç§ãç§ä»¥äžãããªãã¿ã€ã ãŸãŒã³æ å ±ãæããªããç¹å®ã®æå»ãããªãã
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯ãæhourãåminuteãç§secondã§è¡šããã劥åœãªæå»æååã§ããïŒ
secondã³ã³ããŒãã³ãã¯60ãŸãã¯61ã«ã¯ãªãåŸãªããéç§ã衚ãããšã¯ã§ããªãã
The rules to parse a time string are as follows. This will return either a time, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a time component to obtain hour, minute, and second. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Let time be the time with hour hour, minute minute, and second second.
Return time.
The rules to parse a time component, given an input string and a position, are as follows. This will return either an hour, a minute, and a second, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the hour.
If position is beyond the end of input or if the character at position is not a U+003A COLON character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the minute.
Let second be a string with the value "0".
If position is not beyond the end of input and the character at position is a U+003A COLON, then run these substeps:
Advance position to the next character in input.
If position is beyond the end of input, or at the last character in input, or if the next two characters in input starting at position are not both ASCII digits, then fail.
Collect a sequence of characters that are either ASCII digits or U+002E FULL STOP characters. If the collected sequence is three characters long, or if it is longer than three characters long and the third character is not a U+002E FULL STOP character, or if it has more than one U+002E FULL STOP character, then fail. Otherwise, let the collected string be second instead of its previous value.
Interpret second as a base-ten number (possibly with a fractional part). Let second be that number instead of the string version.
If second is not a number in the range 0 †second < 60, then fail.
Return hour, minute, and second.
æµ®åæ¥ä»ããã³æå»ã¯ã幎ãæãæ¥ãæãåãç§ãç§ä»¥äžãããªãç¹å®ã®å çºã°ã¬ã³ãªãªæŠãããªãããã¿ã€ã ãŸãŒã³æ å ±ãæããªãã[GREGORIAN]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯åŠ¥åœãªæµ®åæ¥ä»ããã³æå»æååã§ããïŒ
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯åŠ¥åœãªèŠæ Œåæµ®åæ¥ä»ããã³æå»æååã§ããïŒ
The rules to parse a floating date and time string are as follows. This will return either a date and time, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a date component to obtain year, month, and day. If this returns nothing, then fail.
If position is beyond the end of input or if the character at position is neither a U+0054 LATIN CAPITAL LETTER T character (T) nor a U+0020 SPACE character, then fail. Otherwise, move position forwards one character.
Parse a time component to obtain hour, minute, and second. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Let date be the date with year year, month month, and day day.
Let time be the time with hour hour, minute minute, and second second.
Return date and time.
ã¿ã€ã ãŸãŒã³ãªãã»ããã¯ç¬Šå·ä»ãã®æãšåã®æ°åãããªãã
次ã®ãããããããªãå Žåãæååã¯ãã¿ã€ã ãŸãŒã³ãªãã»ããã衚ã劥åœãªã¿ã€ã ãŸãŒã³ãªãã»ããæååã§ããïŒ
ã¿ã€ã ãŸãŒã³ãUTCã®å Žåã®ã¿èš±ãããã"Z"ïŒU+005AïŒæå
ãŸãã¯ãäžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ãïŒ
ãã®åœ¢åŒã¯ã-23:59ãã+23:59ãŸã§ã®ã¿ã€ã ãŸãŒã³ãªãã»ãããèš±å¯ãããããããç¹ã«ãå®éã®ã¿ã€ã ãŸãŒã³ãªãã»ããã®ç¯å²ã¯-12:00ãã+14:00ãŸã§ã§ãããå®éã®ã¿ã€ã ãŸãŒã³ãªãã»ããã®åã³ã³ããŒãã³ãã¯åžžã«00ã30ãŸãã¯45ã®ããããã§ããããšã¯ãããæ°žé ã«ä¿æãããä¿èšŒã¯ãªããã¿ã€ã ãŸãŒã³ã¯åœã«ãã£ãŠæãã®ãŸãŸã«å€æŽãããæšæºã«åŸããªãã
æ£åŒãªã¿ã€ã ãŸãŒã³ã®åœ¢æä»¥åã«é¡ãæŽå²çãªæä»£ã§ã®ã¿ã€ã ãŸãŒã³ã®ãªãã»ããã䜿çšã«ã€ããŠã®è©³çްã¯ãäžèšã®ã°ããŒãã«æ¥ä»ããã³æå»ã®ç¯ã«ãã䜿çšäžã®æ³šæãšäŸãåç §ã®ããšã
The rules to parse a time-zone offset string are as follows. This will return either a time-zone offset, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a time-zone offset component to obtain timezonehours and timezoneminutes. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Return the time-zone offset that is timezonehours hours and timezoneminutes minutes from UTC.
The rules to parse a time-zone offset component, given an input string and a position, are as follows. This will return either time-zone hours and time-zone minutes, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
If the character at position is a U+005A LATIN CAPITAL LETTER Z character (Z), then:
Let timezonehours be 0.
Let timezoneminutes be 0.
Advance position to the next character in input.
Otherwise, if the character at position is either a "+" (U+002B) or a "-" (U+002D), then:
If the character at position is a "+" (U+002B), let sign be "positive". Otherwise, it's a "-" (U+002D); let sign be "negative".
Advance position to the next character in input.
Collect a sequence of characters that are ASCII digits. Let s be the collected sequence.
If s is exactly two characters long, then run these substeps:
Interpret s as a base-ten integer. Let that number be the timezonehours.
If position is beyond the end of input or if the character at position is not a U+003A COLON character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the timezoneminutes.
If s is exactly four characters long, then run these substeps:
Interpret the first two characters of s as a base-ten integer. Let that number be the timezonehours.
Interpret the last two characters of s as a base-ten integer. Let that number be the timezoneminutes.
Otherwise, fail.
Otherwise, fail.
Return timezonehours and timezoneminutes.
ã°ããŒãã«æ¥ä»ããã³æå»ã¯ã笊å·ä»ãæåãããªãã¿ã€ã ãŸãŒã³ãªãã»ãããšãšãã«å¹Žãæãæ¥ãæãåãç§ãç§ä»¥äžãããªãç¹å®å çºã°ã¬ã³ãªãªæŠã§æ§æããã[GREGORIAN]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæ¥ä»ãæå»ãã¿ã€ã ãŸãŒã³ãªãã»ããã衚ãæååã¯åŠ¥åœãªã°ããŒãã«æ¥ä»ããã³æå»ã§ããïŒ
20äžçŽåã°ã«UTCã圢æããåã®æ¥ä»ã®æå»ã¯ãUTCïŒUT1ã®è¿äŒŒãSIç§ãå»ãïŒã§ã¯ãªããUT1ïŒ0°çµåºŠã§ã®çŸä»£ã®å°çå€ªéœæïŒã®èŠå°ãã衚çŸããã³è§£éãããªããã°ãªããªããã¿ã€ã ãŸãŒã³ã圢æããåã®æå»ã¯ãé©åãªããŒã«ã«æå»ãšãã³ãã³ã®ã°ãªãããžã§èŠ³æž¬ãããæéãšã®éã®ããããã®çŸä»£çãªéãã®ããæç€ºçãªã¿ã€ã ãŸãŒã³ãšãšãã«UT1ã®æéãšããŠè¡šçŸããã³è§£éãããªããã°ãªããªãã
以äžã¯åŠ¥åœãªã°ããŒãã«æ¥ä»ããã³æå»ãšããŠèšè¿°ãããäŸã®äžéšã§ããã
0037-12-13 00:00Z"1979-10-14T12:00:00.001-04:00"8592-01-01T02:09+02:09"æ°ç¹ã®ä»¥äžã®æ¥ä»ã«é¢ããŠé¡èã§ããïŒ
T"ã空çœã«çœ®æãããå Žåãåäžã®ç©ºçœæåã§ãªããã°ãªããªããæåå"2001-12-21 12:00Z"ïŒã³ã³ããŒãã³ãã®éã«2ã€ã®ç©ºçœïŒã¯ããŸãè§£éãããªãã ããããŸãŒã³ãªãã»ããã¯ãå®å šãªã¿ã€ã ãŸãŒã³ã®ä»æ§ã§ã¯ãªããçŸå®ã®æ¥ä»ãšæå»ã®å€ãæäœããå Žåãã§ããã°IANAã®ã¿ã€ã ãŸãŒã³IDã䜿çšããŠãã¿ã€ã ãŸãŒã³ããšã«åå¥ã®ãã£ãŒã«ãã®äœ¿çšãæ€èšããããšã[TIMEZONES]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ãããæ§æãããå Žåãæ¥ä»ãæå»ãã¿ã€ã ãŸãŒã³ãªãã»ããã衚ãæååã¯åŠ¥åœãªUTCã«æ£èŠåãããã°ããŒãã«æ¥ä»ããã³æå»ã§ããïŒ
The rules to parse a global date and time string are as follows. This will return either a time in UTC, with associated time-zone offset information for round-tripping or display purposes, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Parse a date component to obtain year, month, and day. If this returns nothing, then fail.
If position is beyond the end of input or if the character at position is neither a U+0054 LATIN CAPITAL LETTER T character (T) nor a U+0020 SPACE character, then fail. Otherwise, move position forwards one character.
Parse a time component to obtain hour, minute, and second. If this returns nothing, then fail.
If position is beyond the end of input, then fail.
Parse a time-zone offset component to obtain timezonehours and timezoneminutes. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
Let time be the moment in time at year year, month month, day day, hours hour, minute minute, second second, subtracting timezonehours hours and timezoneminutes minutes. That moment in time is a moment in the UTC time zone.
Let timezone be timezonehours hours and timezoneminutes minutes from UTC.
Return time and timezone.
é±ã¯ãé±çªå·å¹Žãšé±çªå·ãããªããé±çªå·ã¯ãæææ¥ããå§ãŸã7æ¥éã瀺ãã以äžã®å®çŸ©ã«åŸã£ãŠããã®ã«ã¬ã³ããŒã·ã¹ãã ã«ãããé±çªå·å¹Žã¯52ãŸãã¯53ã®7æ¥éãæã€ãã°ã¬ãŽãªãªæŠã®æ¥ä»ã§1969幎12æ29æ¥ïŒ1969-12-29ïŒæææ¥ã§å§ãŸã7æ¥éã¯ã1970é±çªå·å¹Žã§é±çªå·1ãšããŠå®çŸ©ããããé£ç¶ããé±ã¯é£çªãä»ãããããé±çªå·å¹Žã§1é±ç®ã®åã®é±ã¯ãåã®é±çªå·å¹Žã®æçµé±ã§ãããéããŸãåæ§ã§ããã[GREGORIAN]
æåã®æ¥ïŒ1æ1æ¥ïŒãæšæã§ããå çºã°ã¬ã³ãªãªæŠã®å¹ŽyearããŸãã¯æåã®æ¥ïŒ1æ1æ¥ïŒãæšæã§ããå çºã°ã¬ã³ãªãªæŠã®å¹Žyearã®ããããã«å¯Ÿå¿ããå Žåãæ°åyearãšãšãã«é±çªå·å¹Žã¯53é±ãæã€ãããã§ãyearã¯400ã§å²ãåããæ°åããŸãã¯4ã§å²ãåããã100ã§å²ãåããªãæ°åã§ãããä»ã®ãã¹ãŠã®é±çªå·å¹Žã¯52é±ã§ããã
53é±ããã€é±çªå·å¹Žã®æçµæ¥ã®é±çªå·ã¯53ã§ããã52é±ããã€é±çªå·å¹Žã®æçµæ¥ã®é±çªå·ã¯52ã§ããã
ç¹å®ã®æ¥ã®é±çªå·å¹Žã®æ°ã¯ãå çºã°ã¬ãŽãªãªæŠã§ããã®æ¥ãå«ãå¹Žã®æ°ãšç°ãªãå Žåããããé±çªå·å¹Žyã§ã®æåã®é±ã¯ãã°ã¬ã³ãªãªå¹Žyã®æåã®æšæãå«ãé±ã§ããã
çŸä»£ã®çšéã«å¯ŸããŠãããã§å®çŸ©ãããé±ã¯ãISO 8601ã§å®çŸ©ããããããªISOé±ã«çžåœããã[ISO8601]
äžããããé ã§ä»¥äžã®ã³ã³ããŒãã³ããããªãå Žåãæååã¯ãé±çªå·å¹Žyearããã³é±weekã衚ã劥åœãªé±æååã§ããïŒ
The rules to parse a week string are as follows. This will return either a week-year number and week number, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not at least four characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the year.
If year is not a number greater than zero, then fail.
If position is beyond the end of input or if the character at position is not a U+002D HYPHEN-MINUS character, then fail. Otherwise, move position forwards one character.
If position is beyond the end of input or if the character at position is not a "W" (U+0057) character, then fail. Otherwise, move position forwards one character.
Collect a sequence of characters that are ASCII digits. If the collected sequence is not exactly two characters long, then fail. Otherwise, interpret the resulting sequence as a base-ten integer. Let that number be the week.
Let maxweek be the week number of the last day of year year.
If week is not a number in the range 1 †week †maxweek, then fail.
If position is not beyond the end of input, then fail.
Return the week-year number year and the week number week.
ç¶ç¶æéã¯ è€æ°ç§ãããªãã
æãšç§ã¯åçã§ã¯ãªãïŒ1ãæã¯æ£ç¢ºãªç§æ°ã§ã¯ãªãããã®æ£ç¢ºãªé·ãã¯ã枬å®ãããæ£ç¢ºãª1æ¥ã«äŸåããæéã§ããïŒã®ã§ããã®ä»æ§ã§å®çŸ©ãããç¶ç¶æéã¯æãå«ããããšã¯ã§ããªã ïŒããªãã¡å¹Žã¯12ã¶æãšç䟡ã§ããïŒãç¹å®ã®ç§æ°ãèšè¿°ããç¶ç¶æéã®ã¿ãèšè¿°å¯èœã§ããã
以äžã®ãããããããªãå Žåãæååã¯ãç¶ç¶æétã§è¡šã劥åœãªç¶ç¶æéæååã§ããïŒ
äžããããé ã§ãªãã©ã«ã«U+0050 LATIN CAPITAL LETTER Pæåã®åŸã«ä»¥äžã®ãµãã³ã³ããŒãã³ããç¶ãã ããã§æ¥ãæãåããã³ç§æ°ã¯tãšããŠåãç§æ°ã«å¯Ÿå¿ããïŒ
U+0044 LATIN CAPITAL LETTER Dæåã®åŸã«ç¶ããæ¥æ°ã衚ã1ã€ä»¥äžã®ASCIIæ°åã
äžããããé ã§ãU+0054 LATIN CAPITAL LETTER Tæåã®åŸã«ä»¥äžã®ãµãã³ã³ããŒãã³ããç¶ãïŒ
U+0048 LATIN CAPITAL LETTER Hæåã®åŸã«ç¶ããææ°ã衚ã1ã€ä»¥äžã®ASCIIæ°åã
U+0044 LATIN CAPITAL LETTER Mæåã®åŸã«ç¶ããåæ°ã衚ã1ã€ä»¥äžã®ASCIIæ°åã
以äžã®ã³ã³ããŒãã³ãïŒ
ç§æ°ã衚ãã1ã€ä»¥äžã®ASCIIæ°åã
ä»»æã§ãç§ä»¥äžã衚ã"."ïŒU+002EïŒæåã®åŸã«ç¶ã1ã2ããŸãã¯3ã€ã®ASCIIæ°åã
U+0053 LATIN CAPITAL LETTER Sæåã
ãã®ããã®ä»æ§ã§å®çŸ©ãããä»ã®æ¥ä»ããã³æå»äŸåã®ãã€ã¯ãæ§æã¯ãISO 8601ã§å®çŸ©ããã圢åŒã®1ã€ã«åºã¥ãã[ISO8601]
ä»»æã®é ã§ãããããç°ãªãç¶ç¶æéæå»ã³ã³ããŒãã³ãã®ã¹ã±ãŒã«ã䌎ãã1ã€ä»¥äžã®ç¶ç¶æéã³ã³ããŒãã³ããç§æ°tãšç䟡ã§ããç§æ°ã§è¡šãããåèšã
ç¶ç¶æéæå»ã³ã³ããŒãã³ãã¯ä»¥äžã®ã³ã³ããŒãã³ããããªãæååã§ããïŒ
0å以äžã®ç©ºçœæåã
ç§æ°ã衚çŸããããã«æå®ãããç¶ç¶æéæå»ã³ã³ããŒãã³ãã¹ã±ãŒã«ïŒäžèšåç §ïŒã§ã¹ã±ãŒã«ãããæå»åäœæ°ã§è¡šãã1ã€ä»¥äžã®ASCIIæ°åã
æå®ãããç¶ç¶æéæå»ã³ã³ããŒãã³ãã¹ã±ãŒã«ã1ïŒããªãã¡åäœãç§ïŒã®å Žåãä»»æã§ã"."ïŒU+002EïŒæåã®åŸã«ç¶ãç§ä»¥äžã衚ã1ã2ããŸãã¯3ã€ã®ASCIIæ°åã
0å以äžã®ç©ºçœæåã
ç¶ç¶æéæå»ã³ã³ããŒãã³ãã®æ°åéšã§çšããããæå»åäœã®ç¶ç¶æéæå»ã³ã³ããŒãã³ãã¹ã±ãŒã«ã衚ãã以äžã®æåã®1ã€ïŒ
0å以äžã®ç©ºçœæåã
ããã¯ISO 8601ã§ã®åœ¢åŒã®ãããã«ãåºã¥ããªããISO 8601ç¶ç¶æé圢åŒã®ä»£ããã«ããã人éã«èªã¿ãããããããšãæå³ããã
The rules to parse a duration string are as follows. This will return either a duration or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let months, seconds, and component count all be zero.
Let M-disambiguator be minutes.
This flag's other value is months. It is used to disambiguate the "M" unit in ISO8601 durations, which use the same unit for months and minutes. Months are not allowed, but are parsed for future compatibility and to avoid misinterpreting ISO8601 durations that would be valid in other contexts.
If position is past the end of input, then fail.
If the character in input pointed to by position is a U+0050 LATIN CAPITAL LETTER P character, then advance position to the next character, set M-disambiguator to months, and skip whitespace.
Run the following substeps in a loop, until a step requiring the loop to be broken or the entire algorithm to fail is reached:
Let units be undefined. It will be assigned one of the following values: years, months, weeks, days, hours, minutes, and seconds.
Let next character be undefined. It is used to process characters from the input.
If position is past the end of input, then break the loop.
If the character in input pointed to by position is a U+0054 LATIN CAPITAL LETTER T character, then advance position to the next character, set M-disambiguator to minutes, skip whitespace, and return to the top of the loop.
Set next character to the character in input pointed to by position.
If next character is a "." (U+002E) character, then let N equal zero. (Do not advance position. That is taken care of below.)
Otherwise, if next character is an ASCII digit, then collect a sequence of characters that are ASCII digits, interpret the resulting sequence as a base-ten integer, and let N be that number.
Otherwise next character is not part of a number; fail.
If position is past the end of input, then fail.
Set next character to the character in input pointed to by position, and this time advance position to the next character. (If next character was a U+002E FULL STOP character (.) before, it will still be that character this time.)
If next character is a "." (U+002E) character, then run these substeps:
Collect a sequence of characters that are ASCII digits. Let s be the resulting sequence.
If s is the empty string, then fail.
Let length be the number of characters in s.
Let fraction be the result of interpreting s as a base-ten integer, and then dividing that number by 10length.
Increment N by fraction.
If position is past the end of input, then fail.
Set next character to the character in input pointed to by position, and advance position to the next character.
If next character is neither a U+0053 LATIN CAPITAL LETTER S character nor a U+0073 LATIN SMALL LETTER S character, then fail.
Set units to seconds.
Otherwise, run these substeps:
If next character is a space character, then skip whitespace, set next character to the character in input pointed to by position, and advance position to the next character.
If next character is a U+0059 LATIN CAPITAL LETTER Y character, or a U+0079 LATIN SMALL LETTER Y character, set units to years and set M-disambiguator to months.
If next character is a U+004D LATIN CAPITAL LETTER M character or a U+006D LATIN SMALL LETTER M character, and M-disambiguator is months, then set units to months.
If next character is a U+0057 LATIN CAPITAL LETTER W character or a U+0077 LATIN SMALL LETTER W character, set units to weeks and set M-disambiguator to minutes.
If next character is a U+0044 LATIN CAPITAL LETTER D character or a U+0064 LATIN SMALL LETTER D character, set units to days and set M-disambiguator to minutes.
If next character is a U+0048 LATIN CAPITAL LETTER H character or a U+0068 LATIN SMALL LETTER H character, set units to hours and set M-disambiguator to minutes.
If next character is a U+004D LATIN CAPITAL LETTER M character or a U+006D LATIN SMALL LETTER M character, and M-disambiguator is minutes, then set units to minutes.
If next character is a U+0053 LATIN CAPITAL LETTER S character or a U+0073 LATIN SMALL LETTER S character, set units to seconds and set M-disambiguator to minutes.
Otherwise if next character is none of the above characters, then fail.
Increment component count.
Let multiplier be 1.
If units is years, multiply multiplier by 12 and set units to months.
If units is months, add the product of N and multiplier to months.
Otherwise, run these substeps:
If units is weeks, multiply multiplier by 7 and set units to days.
If units is days, multiply multiplier by 24 and set units to hours.
If units is hours, multiply multiplier by 60 and set units to minutes.
If units is minutes, multiply multiplier by 60 and set units to seconds.
Forcibly, units is now seconds. Add the product of N and multiplier to seconds.
If component count is zero, fail.
If months is not zero, fail.
Return the duration consisting of seconds seconds.
以äžã®ããããã§ããå Žåãæååã¯ä»»æã®æå»ãæã€åŠ¥åœãªæ¥ä»æååã§ããïŒ
The rules to parse a date or time string are as follows. The algorithm will return either a date, a time, a global date and time, or nothing. If at any point the algorithm says that it "fails", this means that it is aborted at that point and returns nothing.
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Set start position to the same position as position.
Set the date present and time present flags to true.
Parse a date component to obtain year, month, and day. If this fails, then set the date present flag to false.
If date present is true, and position is not beyond the end of input, and the character at position is either a "T" (U+0054) character or a U+0020 SPACE character, then advance position to the next character in input.
Otherwise, if date present is true, and either position is beyond the end of input or the character at position is neither a "T" (U+0054) character nor a U+0020 SPACE character, then set time present to false.
Otherwise, if date present is false, set position back to the same position as start position.
If the time present flag is true, then parse a time component to obtain hour, minute, and second. If this returns nothing, then fail.
If the date present and time present flags are both true, but position is beyond the end of input, then fail.
If the date present and time present flags are both true, parse a time-zone offset component to obtain timezonehours and timezoneminutes. If this returns nothing, then fail.
If position is not beyond the end of input, then fail.
If the date present flag is true and the time present flag is false, then let date be the date with year year, month month, and day day, and return date.
Otherwise, if the time present flag is true and the date present flag is false, then let time be the time with hour hour, minute minute, and second second, and return time.
Otherwise, let time be the moment in time at year year, month month, day day, hours hour, minute minute, second second, subtracting timezonehours hours and timezoneminutes minutes, that moment in time being a moment in the UTC time zone; let timezone be timezonehours hours and timezoneminutes minutes from UTC; and return time and timezone.
åçŽè²ã¯ãsRGBè²ç©ºéã®äžã§åè²ã®ã³ã³ããŒãã³ãèµ€ãç·ãéã衚ãã0ãã255ãŸã§ã®ç¯å²ã®8ãããæ°å3ã€ãããªãã[SRGB]
æ£ç¢ºã«7æåé·ã§ãããæåã®æåã"#"ïŒU+0023ïŒæåã§ãããæ®ãã®6æåããã¹ãŠASCII16鲿°åã§ãããæåã®2æ¡ã¯èµ€ã³ã³ããŒãã³ãã衚ããäžã®2æ¡ã¯ç·ã³ã³ããŒãã³ãã衚ããæåŸã®2æ¡ã¯éã³ã³ããŒãã³ãã衚ã16鲿°ã§ããå Žåãæååã¯åŠ¥åœãªåçŽè²ã§ããã
劥åœãªåçŽè²ã§ãã€U+0041 LATIN CAPITAL LETTER AããU+0046 LATIN CAPITAL LETTER FãŸã§ã®ç¯å²ã®æåãäžå䜿çšããªãå Žåãæååã¯åŠ¥åœãªå°æåã®åçŽè²ã§ããã
The rules for parsing simple color values are as given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a simple color or an error.
Let input be the string being parsed.
If input is not exactly seven characters long, then return an error.
If the first character in input is not a U+0023 NUMBER SIGN character (#), then return an error.
If the last six characters of input are not all ASCII hex digits, then return an error.
Let result be a simple color.
Interpret the second and third characters as a hexadecimal number and let the result be the red component of result.
Interpret the fourth and fifth characters as a hexadecimal number and let the result be the green component of result.
Interpret the sixth and seventh characters as a hexadecimal number and let the result be the blue component of result.
Return result.
The rules for serializing simple color values given a simple color are as given in the following algorithm:
Let result be a string consisting of a single "#" (U+0023) character.
Convert the red, green, and blue components in turn to two-digit hexadecimal numbers using lowercase ASCII hex digits, zero-padding if necessary, and append these numbers to result, in the order red, green, blue.
Return result, which will be a valid lowercase simple color.
Some obsolete legacy attributes parse colors in a more complicated manner, using the rules for parsing a legacy color value, which are given in the following algorithm. When invoked, the steps must be followed in the order given, aborting at the first step that returns a value. This algorithm will return either a simple color or an error.
Let input be the string being parsed.
If input is the empty string, then return an error.
Strip leading and trailing whitespace from input.
If input is an ASCII case-insensitive match for the
string "transparent", then return an error.
If input is an ASCII case-insensitive match for one of the keywords listed in the SVG color keywords section of the CSS3 Color specification, then return the simple color corresponding to that keyword. [CSSCOLOR]
CSS2 System Colors are not recognised.
If input is four characters long, and the first character in input is a "#" (U+0023) character, and the last three characters of input are all ASCII hex digits, then run these substeps:
Let result be a simple color.
Interpret the second character of input as a hexadecimal digit; let the red component of result be the resulting number multiplied by 17.
Interpret the third character of input as a hexadecimal digit; let the green component of result be the resulting number multiplied by 17.
Interpret the fourth character of input as a hexadecimal digit; let the blue component of result be the resulting number multiplied by 17.
Return result.
Replace any characters in input that have a Unicode code point greater
than U+FFFF (i.e. any characters that are not in the basic multilingual plane) with the
two-character string "00".
If input is longer than 128 characters, truncate input, leaving only the first 128 characters.
If the first character in input is a "#" (U+0023) character, remove it.
Replace any character in input that is not an ASCII hex digit with the character "0" (U+0030).
While input's length is zero or not a multiple of three, append a "0" (U+0030) character to input.
Split input into three strings of equal length, to obtain three components. Let length be the length of those components (one third the length of input).
If length is greater than 8, then remove the leading length-8 characters in each component, and let length be 8.
While length is greater than two and the first character in each component is a "0" (U+0030) character, remove that character and reduce length by one.
If length is still greater than two, truncate each component, leaving only the first two characters in each.
Let result be a simple color.
Interpret the first component as a hexadecimal number; let the red component of result be the resulting number.
Interpret the second component as a hexadecimal number; let the green component of result be the resulting number.
Interpret the third component as a hexadecimal number; let the blue component of result be the resulting number.
Return result.
空çœåºåãããŒã¯ã³ã®çµã¯ã1ã€ä»¥äžã®ç©ºçœæåã«ãã£ãŠåºåããã0å以äžã®åèªïŒããŒã¯ã³ãšããŠç¥ãããïŒãå«ãæååã§ãããããã§ãåèªã¯1ã€ä»¥äžã®æåãå«ã¿ãç©ºçœæåãå«ãŸãªãã
空çœåºåãããŒã¯ã³ã®çµãæ§æããæååã¯ãå é ãŸãã¯æ«å°Ÿã«ç©ºçœæåãæã£ãŠãããã
é åºãªãåºæç©ºçœåºåãããŒã¯ã³ã®çµã¯ãç¹°ãè¿ãããŒã¯ã³ã®ãªã空çœåºåãããŒã¯ã³ã®çµã§ããã
é åºããåºæç©ºçœåºåãããŒã¯ã³ã®çµã¯ãç¹°ãè¿ãããŒã¯ã³ã¯ãªãããããŒã¯ã³ã®é åºãæå³ã®ãã空çœåºåãããŒã¯ã³ã®çµã§ããã
空çœåºåãããŒã¯ã³ã®çµã¯ææå®çŸ©ãããèš±å¯ãããå€ã®çµãæã€ãèš±å¯ãããå€ã®çµãå®çŸ©ãããå ŽåãããŒã¯ã³ã¯ãã¹ãŠèš±å¯ãããå€ã®ãªã¹ãã§ãªããã°ãªããªãããã®ä»ã®å€ã¯äžé©åã§ããããã®ãããªèš±å¯ãããå€ã®çµãçšæãããªãå Žåããã¹ãŠã®å€ã¯é©åã§ããã
空çœåºåãããŒã¯ã³ã®çµã®ããŒã¯ã³ãã©ã®ããã«æ¯èŒããããïŒããšãã°ã倧æåå°æåãåºå¥ãããã©ããïŒã¯ãã»ããããšã«å®çŸ©ãããã
When a user agent has to split a string on spaces, it must use the following algorithm:
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let tokens be an ordered list of tokens, initially empty.
While position is not past the end of input:
Collect a sequence of characters that are not space characters.
Append the string collected in the previous step to tokens.
Return tokens.
ã³ã³ãåºåãããŒã¯ã³ã®çµã¯ãããããåäžã®","ïŒU+002CïŒæåã§åºåããã0å以äžã®ããŒã¯ã³ãå«ãæååã§ãããããã§ããŒã¯ã³ã¯0å以äžã®ä»»æã®æååãããªããå é ãæ«å°Ÿãç©ºçœæåã§ãªãã","ïŒU+002CïŒæåãå«ãŸããä»»æã§ç©ºçœæåã«å²ãŸãããã®ã§ããã
ããšãã°ãæåå" a ,b,,d d "ã¯4ã€ã®ããŒã¯ã³ãããªãã"a"ã"b"ã空æååããã³"d d"ãåããŒã¯ã³ã®åšãã®å
é ãšæ«å°Ÿã®ç©ºçœã¯ããŒã¯ã³ã®äžéšãšããŠã«ãŠã³ããããã空æååã¯ããŒã¯ã³ã§ãããããããªãã
ã³ã³ãåºåãããŒã¯ã³ã®çµã¯æã«åŠ¥åœãªããŒã¯ã³ãæ§æãããããªãå¶çŽãæã€ããã®ãããªå¶éãå®çŸ©ãããå ŽåãããŒã¯ã³ã¯ãã¹ãŠãã®å¶éã«åãŸãããã«ããªããã°ãªããªãããã®ä»ã®å€ã¯äžé©åã§ããããã®ãããªå¶éãæå®ãããªãå Žåããã¹ãŠã®å€ã¯é©åã§ããã
When a user agent has to split a string on commas, it must use the following algorithm:
Let input be the string being parsed.
Let position be a pointer into input, initially pointing at the start of the string.
Let tokens be an ordered list of tokens, initially empty.
Token: If position is past the end of input, jump to the last step.
Collect a sequence of characters that are not "," (U+002C) characters. Let s be the resulting sequence (which might be the empty string).
Append s to tokens.
If position is not past the end of input, then the character at position is a "," (U+002C) character; advance position past that character.
Jump back to the step labeled token.
Return tokens.
ã¿ã€ãtypeèŠçŽ ã«å¯ŸããŠåŠ¥åœãªããã·ã¥ååç
§ã¯ã"#"ïŒU+0023ïŒæåã®åŸã«ææžã§ã¿ã€ãtypeããã€èŠçŽ ã®name屿§å€ã«æ£ç¢ºã«äžèŽããæååãããªãæååã§ããã
The rules for parsing a hash-name reference to an element of type type are as follows:
If the string being parsed does not contain a U+0023 NUMBER SIGN character, or if the first such character in the string is the last character in the string, then return null and abort these steps.
Let s be the string from the character immediately after the first U+0023 NUMBER SIGN character in the string being parsed up to the end of that string.
Return the first element of type type that has an id attribute whose value is a case-sensitive match for s or a name attribute whose value is a compatibility
caseless match for s.
ã¡ãã£ã¢ã¯ãšãªä»æ§ã®media_query_listçæç©ã«äžèŽããå Žåãæååã¯åŠ¥åœãªã¡ãã£ã¢ã¯ãšãªã§ããã[MQ]
空æååãç©ºçœæåã®ã¿ãããªãæååããŸãã¯ã¡ãã£ã¢ã¯ãšãªä»æ§ã§äžããããå®çŸ©ã«åŸã£ããŠãŒã¶ãŒç°å¢ã«ãããããã¡ãã£ã¢ã¯ãšãªã®å Žåãæååã¯ãŠãŒã¶ãŒç°å¢ã«äžèŽããã[MQ]
URLæšæºã§ãªãŒãµãªã³ã°é©åæ§èŠä»¶ã«æºæ ããå ŽåãURLã¯åŠ¥åœãªURLã§ããã[URL]
劥åœãªURLã ã空æååã§ãªãå Žåãæååã¯åŠ¥åœãªç©ºã§ãªãURLã§ããã
å é ãšæ«å°Ÿã®ç©ºçœæåãåãé€ããããšã«åŠ¥åœãªURLã§ããå Žåãæååã¯æœåšçã«ã¹ããŒã¹ã§å²ãŸãã劥åœãªURLã§ããã
å é ãšæ«å°Ÿã®ç©ºçœæåãåãé€ããããšã«ã劥åœãªç©ºã§ãªãURLã§ããå Žåãæååã¯æœåšçã«ã¹ããŒã¹ã§å²ãŸãã劥åœãªç©ºã§ãªãURLã§ããã
ãã®ä»æ§ã¯ãããšã解決äžå¯èœã§ããXMLããŒã«ã®äºææ§ã®ããã«å¿
èŠãªå ŽåãHTMLææžã®DOCTYPEã§çšããããã®about: URLäºçŽãšããŠURL about:legacy-compatãå®çŸ©ããã[ABOUT]
ãã®ä»æ§ã¯ãããšã解決äžå¯èœã§ããiframe srcdocææžã®ææžã®ã¢ãã¬ã¹ãšããŠçšããããabout: URLãäºçŽãšããŠURL about:srcdocãå®çŸ©ããã[ABOUT]
Documentãªããžã§ã¯ãã®ãã©ãŒã«ããã¯åºåºURLã¯ã以äžã®ãµãã¹ããããå®è¡ããŠåŸããã絶察URLã§ããïŒ
Documentãiframe srcdocææžã§ããå ŽåãDocumentã®ãã©ãŠãžã³ã°ã³ã³ããã¹ãããã€ãã©ãŠãžã³ã°ã³ã³ããã¹ãã³ã³ããã®Documentã«å±ããææžåºåºURLãè¿ãããããã®æé ãäžæ¢ããã
ææžã®ã¢ãã¬ã¹ãabout:blankã§ããããã€Documentã®ãã©ãŠãžã³ã°ã³ã³ããã¹ããã¯ãªãšãŒã¿ãŒãã©ãŠãžã³ã°ã³ã³ããã¹ããæã€å Žåãã¯ãªãšãŒã¿ãŒDocumentã®ææžåºåºURLãè¿ãããããã®æé ãäžæ¢ããã
ææžã®ã¢ãã¬ã¹ãè¿ãã
Documentãªããžã§ã¯ãã®ææžåºåºURLã¯ã以äžã®ãµãã¹ããããå®è¡ããŠåŸããã絶察URLã§ããïŒ
Documentã«href屿§ãæã€baseèŠçŽ ãååšããªãå ŽåãææžåºåºURLã¯Documentã®ãã©ãŒã«ããã¯åºåºURLã§ããããããã®æé ãäžæ¢ããã
ããã§ãªããã°ãææžåºåºURLã¯ããªãŒé ã§ãhref屿§ãæã€Documentã§æåã®baseèŠçŽ ã®åçµåºåºURLã§ããã
Resolving a URL is the process of taking a relative URL and obtaining the absolute URL that it implies.
To resolve a URL to an absolute URL relative to either another absolute URL or an element, the user agent must use the following steps. Resolving a URL can result in an error, in which case the URL is not resolvable.
Let url be the URL being resolved.
Let encoding be determined as follows:
Document, and the URL character encoding is the
document's character encoding.If encoding is a UTF-16 encoding, then change the value of encoding to UTF-8.
If the algorithm was invoked with an absolute URL to use as the base URL, let base be that absolute URL.
Otherwise, let base be the element's base URL.
Apply the URL parser to url, with base as the base URL, with encoding as the encoding.
If this returns failure, then abort these steps with an error.
Let parsed URL be the result of the URL parser.
Let serialized URL be the result of apply the URL serializer to parsed URL.
Return serialized URL as the resulting absolute URL and parsed URL as the resulting parsed URL.
Given an element, the element's base URL is the base URI of the element, as
defined by the XML Base specification, with the base URI of the document entity being
defined as the document base URL of the Document that owns the element.
[XMLBASE]
For the purposes of the XML Base specification, user agents must act as if all
Document objects represented XML documents.
It is possible for xml:base attributes to be
present even in HTML fragments, as such attributes can be added dynamically using script. (Such
scripts would not be conforming, however, as xml:base
attributes are not allowed in HTML documents.)
When an xml:base attribute is set, changed, or removed, the
attribute's element, and all descendant elements, are affected by a base URL
change.
When a document's document base URL changes, all elements in that document are affected by a base URL change.
The following are base URL change steps, which run when an element is affected by a base URL change (as defined by the DOM specification):
If the absolute URL identified by the hyperlink is being shown to the user, or
if any data derived from that URL is affecting the display, then the href attribute should be re-resolved relative to the element and the UI updated appropriately.
For example, the CSS :link/:visited pseudo-classes might have been affected.
q, blockquote, ins, or
del element with a cite attributeIf the absolute URL identified by the cite attribute is
being shown to the user, or if any data derived from that URL is affecting the display, then the
URL should be re-resolved relative to the
element and the UI updated appropriately.
The element is not directly affected.
For instance, changing the base URL doesn't affect the image displayed by
img elements, although subsequent accesses of the src IDL attribute from script will return a new absolute
URL that might no longer correspond to the image being shown.
User agents can implement a variety of transfer protocols, but this specification mostly defines behavior in terms of HTTP. [HTTP]
The HTTP GET method is equivalent to the default retrieval action of the protocol. For example, RETR in FTP. Such actions are idempotent and safe, in HTTP terms.
The HTTP response codes are equivalent to statuses in other protocols that have the same basic meanings. For example, a "file not found" error is equivalent to a 404 code, a server error is equivalent to a 5xx code, and so on.
The HTTP headers are equivalent to fields in other protocols that have the same basic meaning. For example, the HTTP authentication headers are equivalent to the authentication aspects of the FTP protocol.
A referrer source is either a Document or a URL.
When a user agent is to fetch a resource or URL, optionally from an origin origin, optionally using a specific referrer source as an override referrer source, and optionally with any of a synchronous flag, a manual redirect flag, a force same-origin flag, and a block cookies flag, the following steps must be run. (When a URL is to be fetched, the URL identifies a resource to be obtained.)
If there is a specific override referrer source, and it is a URL, then let referrer be the override referrer source, and jump to the step labeled clean referrer.
Let document be the appropriate Document as given by the
following list:
Document.While document is an iframe srcdoc document, let document be
document's browsing context's browsing context
container's Document instead.
If the origin of Document is not a scheme/host/port tuple, then set referrer to the empty string and jump to the step labeled clean referrer.
Let referrer be the document's address of document.
Clean referrer: Apply the URL parser to referrer and let parsed referrer be the resulting parsed URL.
Let referrer be the result of applying the URL serializer to parsed referrer, with the exclude fragment flag set.
If referrer is not the empty string, is not a data: URL, and is not the URL
"about:blank", then generate the address of the resource from which Request-URIs
are obtained as required by HTTP for the Referer (sic)
header from referrer. [HTTP]
Otherwise, the Referer (sic) header must be omitted,
regardless of its value.
If the algorithm was not invoked with the synchronous flag, perform the remaining steps asynchronously.
If the Document with which any tasks queued by this algorithm would be associated doesn't have an
associated browsing context, then abort these steps.
This is the main step.
If the resource is to be obtained from an application cache, then use the data from that application cache, as if it had been obtained in the manner appropriate given its URL.
If the resource is identified by an absolute URL, and the resource is to be
obtained using an idempotent action (such as an HTTP GET or equivalent), and it is already being downloaded
for other reasons (e.g. another invocation of this algorithm), and this request would be
identical to the previous one (e.g. same Accept and Origin headers), and the user agent is configured such that it is to
reuse the data from the existing download instead of initiating a new one, then use the results
of the existing download instead of starting a new one.
Otherwise, if the resource is identified by an absolute URL with a scheme that
does not define a mechanism to obtain the resource (e.g. it is a mailto:
URL) or that the user agent does not support, then act as if the resource was an HTTP 204 No
Content response with no other metadata.
Otherwise, if the resource is identified by the URL
about:blank, then the resource is immediately available and consists of
the empty string, with no metadata.
Otherwise, at a time convenient to the user and the user agent, download (or otherwise
obtain) the resource, applying the semantics of the relevant specifications (e.g. performing an
HTTP GET or POST operation, or reading the file from disk, or expanding data: URLs, etc).
For the purposes of the Referer (sic) header, use the
address of the resource from which Request-URIs are obtained generated in the earlier
step.
For the purposes of the Origin header, if the fetching algorithm was explicitly initiated from an origin,
then the origin that initiated the HTTP request is origin.
Otherwise, this is a request from a "privacy-sensitive" context. [ORIGIN]
If the algorithm was not invoked with the block cookies flag, and there are cookies to be set, then the user agent must run the following substeps:
Wait until ownership of the storage mutex can be taken by this instance of the fetching algorithm.
Take ownership of the storage mutex.
Update the cookies. [COOKIES]
Release the storage mutex so that it is once again free.
If the fetched resource is an HTTP redirect or equivalent, then:
Abort these steps and return failure from this algorithm, as if the remote host could not be contacted.
Continue, using the fetched resource (the redirect) as the result of the algorithm. If the calling algorithm subsequently requires the user agent to transparently follow the redirect, then the user agent must resume this algorithm from the main step, but using the target of the redirect as the resource to fetch, rather than the original resource.
First, apply any relevant requirements for redirects (such as showing any appropriate
prompts). Then, redo main step, but using the target of the redirect as the resource to
fetch, rather than the original resource. For HTTP requests, the new request must include the
same headers as the original request, except for headers for which other requirements are
specified (such as the Host header). [HTTP]
The HTTP specification requires that 301, 302, and 307 redirects, when applied to methods other than the safe methods, not be followed without user confirmation. That would be an appropriate prompt for the purposes of the requirement in the paragraph above. [HTTP]
If the algorithm was not invoked with the synchronous flag: When the resource is available, or if there is an error of some description, queue a task that uses the resource as appropriate. If the resource can be processed incrementally, as, for instance, with a progressively interlaced JPEG or an HTML file, additional tasks may be queued to process the data as it is downloaded. The task source for these tasks is the networking task source.
Otherwise, return the resource or error information to the calling algorithm.
If the user agent can determine the actual length of the resource being fetched for an instance of this algorithm, and if that length is finite, then
that length is the file's size. Otherwise, the subject of
the algorithm (that is, the resource being fetched) has no known size. (For example, the HTTP Content-Length header might provide this information.)
The user agent must also keep track of the number of bytes downloaded for each instance of this algorithm. This number must exclude any out-of-band metadata, such as HTTP headers.
The application cache processing model introduces some changes to the networking model to handle the returning of cached resources.
The navigation processing model handles redirects itself, overriding the redirection handling that would be done by the fetching algorithm.
Whether the type sniffing rules apply to the fetched resource depends on the algorithm that invokes the rules â they are not always applicable.
Anything in this specification that refers to HTTP also applies to HTTP-over-TLS, as
represented by URLs representing the https scheme.
[HTTP]
User agents should report certificate errors to the user and must either refuse to download resources sent with erroneous certificates or must act as if such resources were in fact served with no encryption.
User agents should warn the user that there is a potential problem whenever the user visits a page that the user has previously visited, if the page uses less secure encryption on the second visit.
Not doing so can result in users not noticing man-in-the-middle attacks.
If a user connects to a server with a self-signed certificate, the user agent could allow the connection but just act as if there had been no encryption. If the user agent instead allowed the user to override the problem and then displayed the page as if it was fully and safely encrypted, the user could be easily tricked into accepting man-in-the-middle connections.
If a user connects to a server with full encryption, but the page then refers to an external resource that has an expired certificate, then the user agent will act as if the resource was unavailable, possibly also reporting the problem to the user. If the user agent instead allowed the resource to be used, then an attacker could just look for "secure" sites that used resources from a different host and only apply man-in-the-middle attacks to that host, for example taking over scripts in the page.
If a user bookmarks a site that uses a CA-signed certificate, and then later revisits that site directly but the site has started using a self-signed certificate, the user agent could warn the user that a man-in-the-middle attack is likely underway, instead of simply acting as if the page was not encrypted.
The Content-Type metadata of a resource must be obtained and interpreted in a manner consistent with the requirements of the MIME Sniffing specification. [MIMESNIFF]
The sniffed type of a resource must be found in a manner consistent with the requirements given in the MIME Sniffing specification for finding the sniffed media type of the relevant sequence of octets. [MIMESNIFF]
The rules for sniffing images specifically and the rules for distinguishing if a resource is text or binary are also defined in the MIME Sniffing specification. Both sets of rules return a MIME type as their result. [MIMESNIFF]
It is imperative that the rules in the MIME Sniffing specification be followed exactly. When a user agent uses different heuristics for content type detection than the server expects, security problems can occur. For more details, see the MIME Sniffing specification. [MIMESNIFF]
meta elementsThe algorithm for extracting a character encoding from a meta element,
given a string s, is as follows. It either returns a character encoding or
nothing.
Let position be a pointer into s, initially pointing at the start of the string.
Loop: Find the first seven characters in s after position that are an ASCII case-insensitive match for the word "charset". If no such match is found, return nothing and abort these
steps.
Skip any space characters that immediately follow the
word "charset" (there might not be any).
If the next character is not a "=" (U+003D), then move position to point just before that next character, and jump back to the step labeled loop.
Skip any space characters that immediately follow the equals sign (there might not be any).
Process the next character as follows:
This algorithm is distinct from those in the HTTP specification (for example, HTTP doesn't allow the use of single quotes and requires supporting a backslash-escape mechanism that is not supported by this algorithm While the algorithm is used in contexts that, historically, were related to HTTP, the syntax as supported by implementations diverged some time ago. [HTTP]
CORSèšå®å±æ§ã¯ãåæå±æ§ã§ãããæ¬¡ã®è¡šã¯ãããŒã¯ãŒããšå±æ§ã®ç¶æ ã瀺ãã1åç®ã®ããŒã¯ãŒãã¯ãããŒã¯ãŒããšåãè¡ã§2åç®ã®ã»ã«å ã®ç¶æ ã«å¯Ÿå¿ã¥ããã
| ããŒã¯ãŒã | ç¶æ | æŠèŠ |
|---|---|---|
anonymous
| Anonymous | Cross-origin CORSã¯ãçç¥èªèšŒæ å ±ãã©ã°èšå®ãæã€èŠçŽ ãèŠæ±ããã |
use-credentials
| Use Credentials | Cross-origin CORSã¯ãçç¥èªèšŒæ å ±ãã©ã°èšå®ãæããªãèŠçŽ ãèŠæ±ããã |
空æååã劥åœãªããŒã¯ãŒãã§ãããå¿åç¶æ
ã«å¯Ÿå¿ã¥ããã屿§ã®åŠ¥åœã§ãªãå€ã®ããã©ã«ãã¯ãå¿åç¶æ
ã§ãããåå°ã®ããã«ãå¿åç¶æ
ã®æ£èŠã±ãŒã¹ã¯anonymousããŒã¯ãŒãã§ããã屿§ãçç¥ãããå Žåã«çšãããããæ¬ èœããå€ã®ããã©ã«ãã¯ãNo CORSç¶æ
ã§ããã
When the user agent is required to perform a potentially CORS-enabled fetch of an absolute URL URL with a mode mode that is either "No CORS", "Anonymous", or "Use Credentials", optionally using a referrer source referrer source, with an origin origin, and with a default origin behaviour default which is either "taint" or "fail", it must run the first applicable set of steps from the following list. The default origin behaviour is only used if mode is "No CORS". This algorithm wraps the fetch algorithm above, and labels the obtained resource as either CORS-same-origin or CORS-cross-origin, or blocks the resource entirely.
data: URLabout:blankRun these substeps:
Fetch URL, using referrer source if one was specified, with the manual redirect flag set.
Loop: Wait for the fetch algorithm to know if the result is a redirect or not.
Follow the first appropriate steps from the following list:
Set URL to the target URL of the redirect and return to the top of the potentially CORS-enabled fetch algorithm (this time, one of the other branches below might be taken, based on the value of mode
The origin of the target URL of the redirect is the same origin as origin.
Transparently follow the redirect and jump to the step labeled loop above.
The resource is available, it is not a redirect, and its origin is the same origin as origin.
The tasks from the fetch algorithm are queued normally, and for the purposes of the calling algorithm, the obtained resource is CORS-same-origin.
The URL does not have the same origin as origin.
Fetch URL, using referrer source if one was specified.
The tasks from the fetch algorithm are queued normally, but for the purposes of the calling algorithm, the obtained resource is CORS-cross-origin. The user agent may report a cross-origin resource access failure to the user (e.g. in a debugging console).
The URL does not have the same origin as origin, and default is fail.
Discard any data fetched as part of this algorithm, and prevent any tasks from such invocations of the fetch algorithm from being queued. For the purposes of the calling algorithm, the user agent must act as if there was a fatal network error and no resource was obtained. The user agent may report a cross-origin resource access failure to the user (e.g. in a debugging console).
The URL does not have the same origin as origin.
Run these steps:
Perform a cross-origin request with the request URL set to URL, with the CORS referrer source set to referrer source if one was specified, the source origin set to origin, and with the omit credentials flag set if mode is "Anonymous" and not set otherwise. [CORS]
Wait for the CORS cross-origin request status to have a value.
Jump to the appropriate step from the following list:
Discard all fetched data and prevent any tasks from the fetch algorithm from being queued. For the purposes of the calling algorithm, the user agent must act as if there was a fatal network error and no resource was obtained. If a CORS resource sharing check failed, the user agent may report a cross-origin resource access failure to the user (e.g. in a debugging console).
The tasks from the fetch algorithm are queued normally, and for the purposes of the calling algorithm, the obtained resource is CORS-same-origin.
äžéšã®IDL屿§ã¯ãç¹å®ã®ã³ã³ãã³ã屿§ã®åæ ãå®çŸ©ãããããã¯ãIDL屿§ãã³ã³ãã³ã屿§ã®çŸåšå€ãè¿ããIDL屿§ãäžããããå€ã«ã³ã³ãã³ã屿§ã®å€ã倿Žããããšãæå³ããã
In general, on getting, if the content attribute is not present, the IDL attribute must act as if the content attribute's value is the empty string; and on setting, if the content attribute is not present, it must first be added.
If a reflecting IDL attribute is a DOMString attribute whose content attribute is
defined to contain a URL, then on getting, the IDL attribute must resolve the value of the content attribute relative to the element
and return the resulting absolute URL if that was successful, or the empty string
otherwise; and on setting, must set the content attribute to the specified literal value. If the
content attribute is absent, the IDL attribute must return the default value, if the content
attribute has one, or else the empty string.
If a reflecting IDL attribute is a DOMString attribute whose content attribute is
defined to contain one or more URLs, then on getting, the IDL attribute
must split the content attribute on spaces and
return the concatenation of resolving each token URL to an
absolute URL relative to the element, with a single U+0020 SPACE character between
each URL, ignoring any tokens that did not resolve successfully. If the content attribute is
absent, the IDL attribute must return the default value, if the content attribute has one, or else
the empty string. On setting, the IDL attribute must set the content attribute to the specified
literal value.
If a reflecting IDL attribute is a DOMString attribute whose content attribute is
an enumerated attribute, and the IDL attribute is limited to only known
values, then, on getting, the IDL attribute must return the conforming value associated with
the state the attribute is in (in its canonical case), if any, or the empty string if the
attribute is in a state that has no associated keyword value or if the attribute is not in a defined state
(e.g. the attribute is missing and there is no missing value default); and on setting, the
content attribute must be set to the specified new value.
If a reflecting IDL attribute is a DOMString attribute but doesn't fall into any
of the above categories, then the getting and setting must be done in a transparent,
case-preserving manner.
If a reflecting IDL attribute is a boolean attribute, then on getting the
IDL attribute must return true if the content attribute is set, and false if it is absent. On
setting, the content attribute must be removed if the IDL attribute is set to false, and must be
set to the empty string if the IDL attribute is set to true. (This corresponds to the rules for
boolean content attributes.)
If a reflecting IDL attribute has a signed integer type (long) then, on getting,
the content attribute must be parsed according to the rules for parsing signed integers, and if that is successful, and the value is in
the range of the IDL attribute's type, the resulting value must be returned. If, on the other
hand, it fails or returns an out of range value, or if the attribute is absent, then the default
value must be returned instead, or 0 if there is no default value. On setting, the given value
must be converted to the shortest possible string representing the number as a valid
integer and then that string must be used as the new content attribute value.
If a reflecting IDL attribute has a signed integer type (long) that is
limited to only non-negative numbers then, on getting, the content attribute must be
parsed according to the rules for parsing non-negative integers, and if that is
successful, and the value is in the range of the IDL attribute's type, the resulting value must be
returned. If, on the other hand, it fails or returns an out of range value, or if the attribute is
absent, the default value must be returned instead, or â1 if there is no default value. On
setting, if the value is negative, the user agent must throw an IndexSizeError
exception. Otherwise, the given value must be converted to the shortest possible string
representing the number as a valid non-negative integer and then that string must be
used as the new content attribute value.
If a reflecting IDL attribute has an unsigned integer type (unsigned
long) then, on getting, the content attribute must be parsed according to the rules
for parsing non-negative integers, and if that is successful, and the value is in the range
0 to 2147483647 inclusive, the resulting value must be returned. If, on the other hand, it fails
or returns an out of range value, or if the attribute is absent, the default value must be
returned instead, or 0 if there is no default value. On setting, first, if the new value is in the
range 0 to 2147483647, then let n be the new value, otherwise let n be the default value, or 0 if there is no default value; then, n must be converted to the shortest possible string representing the number as a
valid non-negative integer and that string must be used as the new content attribute
value.
If a reflecting IDL attribute has an unsigned integer type (unsigned long) that is
limited to only non-negative numbers greater than zero, then the behavior is similar to
the previous case, but zero is not allowed. On getting, the content attribute must first be parsed
according to the rules for parsing non-negative integers, and if that is successful,
and the value is in the range 1 to 2147483647 inclusive, the resulting value must be returned. If,
on the other hand, it fails or returns an out of range value, or if the attribute is absent, the
default value must be returned instead, or 1 if there is no default value. On setting, if the
value is zero, the user agent must throw an IndexSizeError exception. Otherwise,
first, if the new value is in the range 1 to 2147483647, then let n be the new
value, otherwise let n be the default value, or 1 if there is no default
value; then, n must be converted to the shortest possible string representing
the number as a valid non-negative integer and that string must be used as the new
content attribute value.
If a reflecting IDL attribute has a floating-point number type (double or
unrestricted double), then, on getting, the content attribute must be parsed
according to the rules for parsing floating-point number values, and if that is
successful, the resulting value must be returned. If, on the other hand, it fails, or if the
attribute is absent, the default value must be returned instead, or 0.0 if there is no default
value. On setting, the given value must be converted to the best representation of the
number as a floating-point number and then that string must be used as the new content
attribute value.
If a reflecting IDL attribute has a floating-point number type (double or
unrestricted double) that is limited to numbers greater than zero, then
the behavior is similar to the previous case, but zero and negative values are not allowed. On
getting, the content attribute must be parsed according to the rules for parsing
floating-point number values, and if that is successful and the value is greater than 0.0,
the resulting value must be returned. If, on the other hand, it fails or returns an out of range
value, or if the attribute is absent, the default value must be returned instead, or 0.0 if there
is no default value. On setting, if the value is less than or equal to zero, then the value must
be ignored. Otherwise, the given value must be converted to the best representation of the
number as a floating-point number and then that string must be used as the new content
attribute value.
The values Infinity and Not-a-Number (NaN) values throw an exception on setting, as defined in the Web IDL specification. [WEBIDL]
If a reflecting IDL attribute has the type DOMTokenList or
DOMSettableTokenList, then on getting it must return a DOMTokenList or
DOMSettableTokenList object (as appropriate) whose associated element is the element
in question and whose associated attribute's local name is the name of the attribute in question.
The same DOMTokenList or DOMSettableTokenList object must be returned
every time for each attribute.
If a reflecting IDL attribute has the type HTMLElement, or an interface that
descends from HTMLElement, then, on getting, it must run the following algorithm
(stopping at the first point where a value is returned):
document.getElementById() method would find when
called on the content attribute's document if it were passed as its argument the current value of
the corresponding content attribute.On setting, if the given element has an id attribute, and has the
same home subtree as the element of the attribute being set, and the given element is
the first element in that home subtree whose ID is
the value of that id attribute, then the content attribute must be
set to the value of that id attribute. Otherwise, the content
attribute must be set to the empty string.
HTMLAllCollectionãHTMLFormControlsCollectionãHTMLOptionsCollection
ã€ã³ã¿ãŒãã§ãŒã¹ã¯ãHTMLCollectionã€ã³ã¿ãŒãã§ãŒã¹ããæŽŸçããã³ã¬ã¯ã·ã§ã³ã§ããã
HTMLAllCollectionã€ã³ã¿ãŒãã§ãŒã¹ã¯ãè€æ°ã®äžèŽããèŠçŽ ãååšããå Žåãã€ã³ã¿ãŒãã§ãŒã¹ã®namedItem()ã¡ãœãããHTMLCollectionãªããžã§ã¯ããè¿ãäŸå€ãããã³ã€ã³ã¿ãŒãã§ãŒã¹ã®item()ã¡ãœããããã®namedItem()ã¡ãœãããšå矩ã«çšããããäŸå€ãšãšãã«ãã¡ããã©HTMLCollectionã®ãããªèŠçŽ ã®æ±çšã³ã¬ã¯ã·ã§ã³ã«äœ¿çšããããããã¯ã¬ã¬ã·ãŒdocument.all屿§ã®ã¿ãæå³ããã
interface HTMLAllCollection : HTMLCollection {
// inherits length and item(unsigned long index)
(HTMLCollection or Element)? item(DOMString name);
legacycaller getter (HTMLCollection or Element)? namedItem(DOMString name); // shadows inherited namedItem()
HTMLAllCollection tags(DOMString tagName);
};
lengthã³ã¬ã¯ã·ã§ã³ã®èŠçŽ æ°ãè¿ãã
item(index)ã³ã¬ã¯ã·ã§ã³ããã®ã€ã³ããã¯ã¹indexãšãšãã«ã¢ã€ãã ãè¿ããã¢ã€ãã ã¯ããªãŒé ã«ãœãŒããããã
item(name)item(name)namedItem(name)namedItem(name)ã³ã¬ã¯ã·ã§ã³ããã®IDãŸãã¯åånameãšãšãã«ã¢ã€ãã ãè¿ãã
è€æ°ã®ãããããã¢ã€ãã ãååšããå Žåããããã®èŠçŽ ãã¹ãŠãå«ãHTMLCollectionãªããžã§ã¯ããè¿ãããã
ãã ãaãappletãareaãembedãformãframeãframesetãiframeãimgãããã³objectèŠçŽ ã¯ãã®ã¡ãœããã®ããã«ååãæã£ãŠãããããããã®ååã¯name屿§å€ã«ãã£ãŠäžããããã
tags(tagName)æå®ãããã¿ã°åãæã€èŠçŽ ã®ã¿ãå«ããçŸåšã®ã³ã¬ã¯ã·ã§ã³ã®ãã£ã«ã¿ãªã³ã°ããã衚瀺ã§ããã³ã¬ã¯ã·ã§ã³ãè¿ãã
The object's supported property indices are as defined for
HTMLCollection objects.
The supported property names consist of the non-empty values of all the id attributes of all the elements represented by the
collection, and the non-empty values of all the name attributes of all the
a, applet, area, embed, form,
frame, frameset, iframe, img, and
object elements represented by the collection, in tree
order, ignoring later duplicates, with the id of an element
preceding its name if it contributes both, they differ from each other, and neither
is the duplicate of an earlier entry.
The item(name) and namedItem(name)
methods must act according to the following algorithm:
Let collection be an HTMLCollection object rooted at the
same node as the HTMLAllCollection object on which the method was invoked, whose
filter matches only elements that already match the filter of the HTMLAllCollection
object on which the method was invoked and that are either:
The tags(tagName) method must return an HTMLAllCollection rooted
at the same node as the HTMLAllCollection object on which the method was invoked,
whose filter matches only HTML elements whose local name is the tagName argument and that already match the filter of the
HTMLAllCollection object on which the method was invoked. In HTML
documents, the argument must first be converted to ASCII lowercase.
HTMLFormControlsCollectionã€ã³ã¿ãŒãã§ãŒã¹ã¯ãformãšfieldsetèŠçŽ ã§èšèŒèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã«äœ¿çšãããã
interface HTMLFormControlsCollection : HTMLCollection {
// inherits length and item()
legacycaller getter (RadioNodeList or Element)? namedItem(DOMString name); // shadows inherited namedItem()
};
interface RadioNodeList : NodeList {
attribute DOMString value;
};
lengthã³ã¬ã¯ã·ã§ã³ã®èŠçŽ æ°ãè¿ãã
item(index)ã³ã¬ã¯ã·ã§ã³ããã®ã€ã³ããã¯ã¹indexãšãšãã«ã¢ã€ãã ãè¿ããã¢ã€ãã ã¯ããªãŒé ã«ãœãŒããããã
namedItem(name)namedItem(name)ã³ã¬ã¯ã·ã§ã³ããã®IDãŸãã¯name nameãšãšãã«ã¢ã€ãã ãè¿ãã
è€æ°ã®ãããããã¢ã€ãã ãååšããå Žåããããã®èŠçŽ ãã¹ãŠãå«ãRadioNodeListãªããžã§ã¯ããè¿ãããã
ãªããžã§ã¯ãã«ãã£ãŠè¡šãããæåã«ãã§ãã¯ãããã©ãžãªãã¿ã³ã®å€ãè¿ãã
èšå®ãããå Žåããªããžã§ã¯ãã«ãã£ãŠè¡šãããäžããããå€ãæã€æåã®ã©ãžãªãã¿ã³ããã§ãã¯ããã
The object's supported property indices are as defined for
HTMLCollection objects.
The supported property names consist of the non-empty values of all the id and name attributes of all the
elements represented by the collection, in tree order, ignoring later
duplicates, with the id of an element preceding its name if it contributes both, they differ from each other, and neither is the
duplicate of an earlier entry.
The namedItem(name) method must act according to the following algorithm:
id attribute or a name
attribute equal to name, then return that node and stop the algorithm.id attribute or a name attribute equal
to name, then return null and stop the algorithm.RadioNodeList object representing a live
view of the HTMLFormControlsCollection object, further filtered so that the only
nodes in the RadioNodeList object are those that have either an id attribute or a name attribute equal
to name. The nodes in the RadioNodeList object must be sorted in
tree order.RadioNodeList object.Members of the RadioNodeList interface inherited from the NodeList
interface must behave as they would on a NodeList object.
The value IDL attribute on the
RadioNodeList object, on getting, must return the value returned by running the
following steps:
Let element be the first element in tree order
represented by the RadioNodeList object that is an input element whose
type attribute is in the Radio Button state and whose checkedness is true. Otherwise, let it be null.
If element is null, or if it is an element with no value attribute, return the empty string.
Otherwise, return the value of element's value attribute.
On setting, the value IDL attribute must run the
following steps:
Let element be the first element in tree order
represented by the RadioNodeList object that is an input element whose
type attribute is in the Radio Button state and whose value content attribute is present and equal to the new value, if
any. Otherwise, let it be null.
If element is not null, then set its checkedness to true.
HTMLOptionsCollectionã€ã³ã¿ãŒãã§ãŒã¹ã¯ãoptionèŠçŽ ã®ã³ã¬ã¯ã·ã§ã³ã«äœ¿çšããããåžžã«selectèŠçŽ ãã«ãŒãã§ãããèŠçŽ ã®åå«ãã³ã³ãããŒã«ãã屿§ããã³ã¡ãœãããæã€ã
interface HTMLOptionsCollection : HTMLCollection {
// inherits item()
attribute unsigned long length; // shadows inherited length
legacycaller HTMLOptionElement? (DOMString name);
setter creator void (unsigned long index, HTMLOptionElement? option);
void add((HTMLOptionElement or HTMLOptGroupElement) element, optional (HTMLElement or long)? before = null);
void remove(long index);
attribute long selectedIndex;
};
length [ = value ]ã³ã¬ã¯ã·ã§ã³ã®èŠçŽ æ°ãè¿ãã
ããå°ããæ°ã«èšå®ããå Žåã察å¿ããã³ã³ããå
ã®optionèŠçŽ æ°ã¯åãæšãŠãããã
ãã倧ããæ°ã«èšå®ããå Žåããã®ã³ã³ããã«æ°ãã空çœã®optionèŠçŽ ã远å ããã
item(index)ã³ã¬ã¯ã·ã§ã³ããã®ã€ã³ããã¯ã¹indexãšãšãã«ã¢ã€ãã ãè¿ããã¢ã€ãã ã¯ããªãŒé ã«ãœãŒããããã
namedItem(name)namedItem(name)ã³ã¬ã¯ã·ã§ã³ããã®IDãŸãã¯name nameãšãšãã«ã¢ã€ãã ãè¿ãã
è€æ°ã®ãããããã¢ã€ãã ãååšããå Žåãæåã®ãã®ãè¿ãããã
add(element [, before ] )beforeã«ãã£ãŠäžããããããŒãã®åã®èŠçŽ ãæ¿å ¥ããã
beforeåŒæ°ã¯æ°åã§ãããããã®å Žåelementã¯ãã®æ°åããã€ã¢ã€ãã ã®åã«æ¿å ¥ããããŸãã¯ã³ã¬ã¯ã·ã§ã³ããã®èŠçŽ ã§ãããããã®å Žåelementã¯ãã®èŠçŽ ã®åã«æ¿å ¥ãããã
beforeãçç¥ããããnullããŸãã¯ç¯å²å€ã®æ°åã®å Žåãelementã¯ãªã¹ãã®æåŸã«å ããããã ããã
èŠçŽ ã«æ¿å
¥ãããèŠçŽ ã芪èŠçŽ ã®å Žåããã®ã¡ãœããã¯HierarchyRequestErroräŸå€ãæããã ããã
selectedIndex [ = value ]ãããããªãã°ãæåã«éžã°ããã¢ã€ãã ã®ã€ã³ããã¯ã¹ãããŸãã¯éžæããã¢ã€ãã ãååšããªãå Žåâ1ãè¿ãã
éžæã倿Žããèšå®ãå¯èœã§ããã
The object's supported property indices are as defined for
HTMLCollection objects.
On getting, the length
attribute must return the number of nodes represented by the collection.
On setting, the behavior depends on whether the new value is equal to, greater than, or less
than the number of nodes represented by the collection at that time. If the number is
the same, then setting the attribute must do nothing. If the new value is greater, then n new option elements with no attributes and no child nodes must be
appended to the select element on which the HTMLOptionsCollection is
rooted, where n is the difference between the two numbers (new value minus old
value). Mutation events must be fired as if a DocumentFragment containing the new
option elements had been inserted. If the new value is lower, then the last n nodes in the collection must be removed from their parent nodes, where n is the difference between the two numbers (old value minus new value).
Setting length never removes
or adds any optgroup elements, and never adds new children to existing
optgroup elements (though it can remove children from them).
The supported property names consist of the non-empty values of all the id and name attributes of all the
elements represented by the collection, in tree order, ignoring later
duplicates, with the id of an element preceding its name if it contributes both, they differ from each other, and neither is
the duplicate of an earlier entry.
The legacy caller of the
HTMLOptionsCollection interface must act like the namedItem() method on the ancestor
HTMLCollection interface.
When the user agent is to set the value of a new indexed property or set the value of an existing indexed property for a given property index index to a new value value, it must run the following algorithm:
If value is null, invoke the steps for the remove method with index as
the argument, and abort these steps.
Let length be the number of nodes represented by the collection.
Let n be index minus length.
If n is greater than zero, then append a DocumentFragment consisting of n-1 new option elements with no attributes and
no child nodes to the select element on which the HTMLOptionsCollection
is rooted.
If n is greater than or equal to zero, append value to the select
element. Otherwise, replace the indexth element in the collection by value.
The add(element, before) method must act according to the following algorithm:
If element is an ancestor of the select element on which
the HTMLOptionsCollection is rooted, then throw a HierarchyRequestError
exception and abort these steps.
If before is an element, but that element isn't a descendant of the
select element on which the HTMLOptionsCollection is rooted, then throw
a NotFoundError exception and abort these steps.
If element and before are the same element, then return and abort these steps.
If before is a node, then let reference be that node. Otherwise, if before is an integer, and there is a beforeth node in the collection, let reference be that node. Otherwise, let reference be null.
If reference is not null, let parent be the parent
node of reference. Otherwise, let parent be the
select element on which the HTMLOptionsCollection is rooted.
Act as if the DOM insertBefore() method was
invoked on the parent node, with element as the first
argument and reference as the second argument.
The remove(index) method must act according to the following algorithm:
If the number of nodes represented by the collection is zero, abort these steps.
If index is not a number greater than or equal to 0 and less than the number of nodes represented by the collection, abort these steps.
Let element be the indexth element in the collection.
Remove element from its parent node.
The selectedIndex IDL
attribute must act like the identically named attribute on the select element on
which the HTMLOptionsCollection is rooted
DOMStringMapã€ã³ã¿ãŒãã§ãŒã¹ã¯ãååãšå€ã®ãã¢ã®çµã衚ããããã¯ãããããã£ãŒã®ã¢ã¯ã»ã¹ã®ããã«ã¹ã¯ãªããèšèªã®ãã€ãã£ãŽã¡ã«ããºã ã䜿çšããŠããã¢ã®çµãå
¬éããã
When a DOMStringMap object is instantiated, it is associated with three
algorithms, one for getting the list of name-value pairs, one for setting names to certain values,
and one for deleting names.
[OverrideBuiltins]
interface DOMStringMap {
getter DOMString (DOMString name);
setter creator void (DOMString name, DOMString value);
deleter void (DOMString name);
};
The supported property names on a DOMStringMap object at any instant
are the names of each pair returned from the algorithm for getting the list of name-value pairs at
that instant, in the order returned.
To determine the value of a named property name in a DOMStringMap, the user agent must return the value component
of the name-value pair whose name component is name in the list returned by
the algorithm for getting the list of name-value pairs.
To set the value of a new or existing named property name to value
value, the algorithm for setting names to certain values must be run, passing
name as the name and the result of converting value to a
DOMString as the value.
To delete an existing named property name, the algorithm for deleting names must be run, passing name as the name.
The DOMStringMap interface definition here is only intended for
JavaScript environments. Other language bindings will need to define how DOMStringMap
is to be implemented for those languages.
èŠçŽ ã®dataset屿§ã¯ãèŠçŽ ã®data-*屿§ãå
¬éããã
é¡äŒŒã®æ§é ãšãšãã«ä»¥äžã®åŒæ°ããã³èŠçŽ ãäžãããããšããïŒ
<img class="tower" id="tower5" data-x="12" data-y="5"
data-ai="robotarget" data-hp="46" data-ability="flames"
src="towers/rocket.png alt="Rocket Tower">
1ã€ã¯é¢æ°splashDamage()ãããã€ãã®åŒæ°ãåãããšãèãããã第1åŒæ°ã¯åŠçããèŠçŽ ãšãªãïŒ
function splashDamage(node, x, y, damage) {
if (node.classList.contains('tower') && // checking the 'class' attribute
node.dataset.x == x && // reading the 'data-x' attribute
node.dataset.y == y) { // reading the 'data-y' attribute
var hp = parseInt(node.dataset.hp); // reading the 'data-hp' attribute
hp = hp - damage;
if (hp < 0) {
hp = 0;
node.dataset.ai = 'dead'; // setting the 'data-ai' attribute
delete node.dataset.ability; // removing the 'data-ability' attribute
}
node.dataset.hp = hp; // setting the 'data-hp' attribute
}
}
äžéšã®ãªããžã§ã¯ãã¯ãããæäœã§ã³ããŒããã³ã¯ããŒãºãããããšããµããŒããããããã¯ãªããžã§ã¯ããè²æž¡å¯èœãšåŒã³ãç¹ã«å ±æäžå¯ã®æææš©ãŸãã¯ã¯ãŒã«ãŒã®å¢çãè¶ããŠé«äŸ¡ãªãªãœãŒã¹ã移転ããããšã«äœ¿çšãããã
以äžã¯Transferableåã§ããïŒ
The following IDL block formalizes this:
[NoInterfaceObject]
interface Transferable { };
ArrayBuffer implements Transferable;
MessagePort implements Transferable;
To transfer a Transferable object to a
new owner, the user agent must run the steps defined for the type of
object in question. The steps will return a new object of the same
type, and will permanently neuter the original
object. (This is an irreversible and non-idempotent operation; once
an object has been transferred, it cannot be transferred, or indeed
used, again.)
To transfer an
ArrayBuffer object old to a new owner owner,
a user agent must create a new ArrayBuffer object pointing at the same underlying
data as old, thus obtaining new, must neuter the old object, and must
finally return new. [TYPEDARRAY]
Rules for how to transfer a
MessagePort object are given in the relevant sections of this specification.
When a user agent is required to obtain a structured clone of a value, optionally
with a transfer map, it must run the following algorithm, which either returns a separate
value, or throws an exception. If a transfer map is provided, it consists of an association
list of Transferable objects to placeholder objects.
Let input be the value being cloned.
Let transfer map be the transfer map passed to the algorithm, if any, or the empty list otherwise.
Let memory be an association list of pairs of objects, initially empty. This is used to handle duplicate references. In each pair of objects, one is called the source object and the other the destination object.
For each mapping in transfer map, add a mapping from the
Transferable object (the source object) to the placeholder object (the destination
object) to memory.
Let output be the value resulting from calling the internal structured cloning algorithm with input as the "input" argument, and memory as the "memory" argument.
Return output.
The internal structured cloning algorithm is always called with two arguments, input and memory, and its behavior is as follows:
If input is the source object of a pair of objects in memory, then return the destination object in that pair of objects and abort these steps.
If input is a primitive value, then return that value and abort these steps.
Let deep clone be none.
The input value is an object. Jump to the appropriate step below:
Boolean objectLet output be a newly constructed Boolean object with the same value as input.
Number objectLet output be a newly constructed Number object with the same value as input.
String objectLet output be a newly constructed String object with the same value as input.
Date objectLet output be a newly constructed Date object with the
same value as input.
RegExp objectLet output be a newly constructed RegExp object with the
same pattern and flags as input.
The value of the lastIndex property is not copied.
Blob objectIf input has been disabled through the close() method, throw a DataCloneError exception
and abort the overall structured clone algorithm. Otherwise, let output be a newly constructed object of the same class as input, corresponding to the same underlying data.
FileList objectLet output be a newly constructed FileList object
containing a list of newly constructed File objects corresponding to the same
underlying data as those in input, maintaining their relative
order.
ImageData objectLet output be a newly constructed ImageData object
whose width, height, and resolution attributes have values equal to the
corresponding attributes on input, and whose data attribute has the value obtained from invoking the
internal structured cloning algorithm recursively with the value of the data attribute on input as the new "input" argument and memory as the new "memory" argument.
ArrayBuffer objectIf input has been neutered, throw a DataCloneError
exception and abort the overall structured clone algorithm. Otherwise, let output be a newly constructed ArrayBuffer object whose contents are
a copy of input's contents, with the same length.
ArrayBufferView objectLet output be a newly constructed object of the same class as input, with each IDL attribute defined for that class being set to the value obtained from invoking the internal structured cloning algorithm recursively with the value of the attribute on input as the new "input" argument and memory as the new "memory" argument.
Only IDL attributes defined on the class (including the
ArrayBufferView attributes) are cloned. Properties added by a script, for
example, are not cloned.
Array objectLet output be a newly constructed empty Array object whose
length is equal to the length of input, and set deep clone to own.
This means that the length of sparse arrays is preserved.
Object objectLet output be a newly constructed empty Object
object, and set deep clone to own.
Map objectLet output be a newly constructed empty Map
object, and set deep clone to map.
Set objectLet output be a newly constructed empty Set
object, and set deep clone to set.
Let output be a clone of the object as defined by the other specification.
Error, Function)Throw a DataCloneError exception and abort the overall structured
clone algorithm.
For the purposes of the algorithm above, an object is a particular type of object class if its [[Class]] internal property is equal to class.
For example, "input is an Object object" if
input's [[Class]] internal property is equal to the string "Object".
Add a mapping from input (the source object) to output (the destination object) to memory.
If deep clone is set to map, then run these substeps. These substeps use the terminology and typographic conventions used in the JavaScript specification's definition of Maps. [ECMA262]
Let source be the List that is the value of input's [[MapData]] internal slot, if any. If there is no such slot, then
instead throw a DataCloneError exception and abort the overall structured
clone algorithm. [ECMA262]
Let target be the List that is the value of output's [[MapData]] internal slot.
For each Record {[[key]], [[value]]} entry that is an element of source, run the following substeps:
Let key have the value obtained from invoking the internal structured cloning algorithm recursively with entry.[[key]] as the new "input" argument and memory as the new "memory" argument.
Let value have the value obtained from invoking the internal structured cloning algorithm recursively with entry.[[value]] as the new "input" argument and memory as the new "memory" argument.
Let new entry be the Record {[[key]]: key, [[value]]: value}.
Append new entry as the last element of target.
Set deep clone to own.
If deep clone is set to set, then run these substeps. These substeps use the terminology and typographic conventions used in the JavaScript specification's definition of Sets. [ECMA262]
Let source be the List that is the value of input's [[SetData]] internal slot, if any. If there is no such slot, then
instead throw a DataCloneError exception and abort the overall structured
clone algorithm. [ECMA262]
Let target be the List that is the value of output's [[SetData]] internal slot.
For each entry that is an element of source that is not empty, run the following substeps:
Let new entry have the value obtained from invoking the internal structured cloning algorithm recursively with entry as the new "input" argument and memory as the new "memory" argument.
Append new entry as the last element of target.
Set deep clone to own.
If deep clone is set to own, then, for each enumerable own property in input, run the following steps:
Let name be the name of the property.
Let source value be the result of calling the [[Get]] internal method of input with the argument name. If the [[Get]] internal method of a property involved executing script, and that script threw an uncaught exception, then abort the overall structured clone algorithm, with that exception being passed through to the caller.
Let cloned value be the result of invoking the internal structured cloning algorithm recursively with source value as the "input" argument and memory as the "memory" argument. If this results in an exception, then abort the overall structured clone algorithm, with that exception being passed through to the caller.
Add a new property to output having the name name, and having the value cloned value.
The order of the properties in the input and output objects must be the same, and any properties whose [[Get]] internal method involves running script must be processed in that same order.
This does not walk the prototype chain.
Property descriptors, setters, getters, and analogous features are not copied in this process. For example, the property in the input could be marked as read-only, but in the output it would just have the default state (typically read-write, though that could depend on the scripting environment).
Properties of Array objects are not treated any differently than those of other Objects. In particular, this means that non-index properties of arrays are copied as well.
Return output.
This algorithm preserves cycles and preserves the identity of duplicate objects in graphs.
次ã®ã³ãŒã«ããã¯é¢æ°åã¯ãFileãªããžã§ã¯ããšå¯Ÿè©±ããããŸããŸãªAPIã§äœ¿çšãããïŒ
callback FileCallback = void (File file);
There is an implied strong reference from any IDL attribute that returns a pre-existing object to that object.
HTMLåå空éã¯http://www.w3.org/1999/xhtmlã§ããã
MathMLåå空éã¯http://www.w3.org/1998/Math/MathMLã§ããã
SVGåå空éã¯http://www.w3.org/2000/svgã§ããã
XLinkåå空éã¯http://www.w3.org/1999/xlinkã§ããã
XMLåå空éã¯http://www.w3.org/XML/1998/namespaceã§ããã
XMLNSåå空éã¯http://www.w3.org/2000/xmlns/ã§ããã
ããŒã¿ãã€ãã³ã°ããŒã«ããã³ãã¹ã¯ãªãããå®è¡ãCSSãXPathãè©äŸ¡ããŸãã¯å¥ã®æ¹æ³ã§ä»»æã®ã³ã³ãã³ãã«DOMã®çµæãå ¬éããããšãªããã³ã³ãã³ãã«å¯Ÿããæäœãå®è¡ãããŠãŒã¶ãŒãšãŒãžã§ã³ãã¯ããããã®DOMããŒãã®é¡äŒŒäœãå®éã«äžèšã®æååãå ¬éããããšãªããç¹å®ã®åå空éã§ããããšãçžå¿ã®äž»åŒµããããšã«ãã£ãŠ"åå空éããµããŒã"ããŠãããã
HTMLæ§æã«ãããŠãååç©ºéæ¥é èŸããã³åå空é宣èšã¯ãXMLãšåäžã®å¹æãæããªããããšãã°ãHTMLèŠçŽ åã«ãããŠã³ãã³ã¯ç¹å¥ãªæå³ãæããªãã