<html xmlns="http://www.w3.org/1999/xhtml"><head></head><body><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="1" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[1]</anchor-end>
DOM 式の camelCaseName を
Perl モジュールでは適宜
underscored_name に変換するためのアルゴリズムについて。</p><p>参考: <anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">manakai//メモ//2005-02-16</anchor></p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end>
Test case:</p><table><tbody><tr><td>#</td><td>camelCase</td><td>underscore</td><td>hyphen</td><td>備考</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="2" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[2]</anchor-end></td><td>href</td><td>href</td><td></td><td>HTMLAnchorElement1</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="6" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[6]</anchor-end></td><td>URL</td><td>url</td><td></td><td>HTMLDocument1</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="12" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[12]</anchor-end></td><td>x1</td><td>x1</td><td></td><td>SVG</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="3" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[3]</anchor-end></td><td>appendChild</td><td>append_child</td><td></td><td>Node1</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="14" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[14]</anchor-end></td><td>utf16Offset</td><td>utf16_offset</td><td></td><td>DOMLocator3</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="15" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[15]</anchor-end></td><td>findOffset32</td><td>find_offset32</td><td></td><td>StringExtended3</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="8" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[8]</anchor-end></td><td>MozBinding</td><td>_moz_binding</td><td>-moz-binding</td><td>CSS property</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="10" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[10]</anchor-end></td><td>?</td><td>panose_1</td><td>panose-1</td><td>CSS descriptor</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="9" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[9]</anchor-end></td><td>valueUTF16BE</td><td>value_utf16be</td><td></td><td>ManakaiDOMString1</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="4" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[4]</anchor-end></td><td>getAttributeNode</td><td>get_attribute_node</td><td></td><td>Element1</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="5" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[5]</anchor-end></td><td>getAttributeNS</td><td>get_attribute_ns</td><td></td><td>Element2</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="7" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[7]</anchor-end></td><td>createLSParser</td><td>create_ls_parser</td><td></td><td>DOMImplementationLS3</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="13" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[13]</anchor-end></td><td>rfc3339DateTime</td><td>rfc3339_date_time</td><td></td><td>ManakaiPerlCodeImplementation</td></tr><tr><td><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="11" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[11]</anchor-end></td><td>scrollbar3dLightColor (例外的)</td><td>scrollbar_3dlight_color</td><td>scrollbar-3dlight-color</td><td>CSS property</td></tr></tbody></table><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2005-04-30 13:27:37 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="16" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[16]</anchor-end>
HTMLBodyElement.aLink, HTMLBodyElement.bgColor,
HTMLBodyElement.vLink,
HTML*Element.tabIndex,
HTML*Element.accessKey,
HTMLInputElement.maxLength,
HTML*Element.readOnly,
HTML*Element.useMap,
HTML*Element.isMap,
HTMLHRElement.noShade,
HTMLModElement.dateTime,
HTML*Element.longDesc,
HTMLObjectElement.codeBase,
HTMLObjectElement.codeType,
HTMLParamElement.valueType,
HTMLAnchorElement.codeBase,
HTMLAreaElement.noHref,
HTMLTableElement.bgColor,
HTMLTableElement.cellPadding,
HTMLTableElement.cellSpacing,
HTMLTableElement.tHead,
HTMLTableElement.tFoot,
HTMLTableElement.tBodies,
HTMLTableColElement.vAlign,
HTMLTableSectionElement.vAlign,
HTMLTableRowElement.bgColor,
HTMLTableRowElement.vAlign,
HTMLTableCellElement.bgColor,
HTMLTableCellElement.vAlign,
HTMLTableCellElement.noWrap,
HTMLTableCellElement.rowSpan,
HTMLTableCellElement.colSpan,
HTMLFrameElement.frameBorder,
HTMLFrameElement.marginWidth,
HTMLFrameElement.marginHeight,
HTMLFrameElement.noResize,
HTMLFrameIElement.frameBorder,
HTMLFrameIElement.marginWidth,
HTMLFrameIElement.marginHeight,
HTMLFrameIElement.noResize
は特別扱いして XHTML と同じになるように全小文字にするか、それとも原則通り _
を入れて小文字化にするか。
そもそも元の名前が vSpace じゃなくて 
vspace だったり hrefLang や hRefLang
じゃなくて hreflang だったりどういう基準で大文字にしているのかがわからない
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">DOM水準0</anchor> との互換?)。いっそ全部小文字にしてしまった方が良いのかも。</p><p>その場合
HTMLTableElement.createTHead,
HTMLTableElement.createTFoot
は create_thead のように。</p><p>だいたい t_head とか v_space
とかは間抜けだな。</p><p>HTMLTableColElement.chOff,
HTMLTableSectionElement.chOff,
HTMLTableRowElement.chOff
はどうしたことか。 char と charoff
は char 型との衝突を恐れて ch
にしたのだろうが、原則通りなら
htmlChar とか htmlCharOff
じゃないのか。 (これも DOM 水準 0?)</p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2005-04-30 14:02:50 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="17" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[17]</anchor-end>
CSSStyleRule.FONT_FACE_RULE は元の CSS
では @fontface で余計な _ が入っている。
でもこれは定数だしわざわざいじるほどのことでもなかろう。
CSS2Properties の CSS 特性に対応する属性は流石に綺麗に機械的に対応している。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2005-04-30 14:10:28 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="18" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[18]</anchor-end>
SVGLocatable.getBBox</p><p>SVGLangSpace.xmllang,
SVGLangSpace.xmlbase
は xmlLang や xmlBase
じゃなくて全部小文字。参考までに。
xlink:href は
SVGURIReference.href。
@color-profile
は SVGCSSRule.COLOR_PROFILE_RULE。</p><p>(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[19]</anchor-end>
ていうか今のアルゴリズムだと
valueUTF16BE が value_utf_1__6be
になってしまう。 (元の名前もどうかとおもうけどさ)
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2005-05-05 12:04:20 +00:00</weak>)</p><p><anchor-end xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="20" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">[20]</anchor-end>
<anchor-internal xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:" a0:anchor="19" xmlns:a0="urn:x-suika-fam-cx:markup:suikawiki:0:9:">&gt;&gt;19</anchor-internal> findOffset16 -&gt; find_offset_1_6</p><p>だめじゃん。
(<anchor xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">名無しさん</anchor> <weak xmlns="urn:x-suika-fam-cx:markup:suikawiki:0:9:">2005-05-05 12:06:54 +00:00</weak>)</p></body></html>