compilerplugins/clang/store/staticvar.cxx |    4 
 include/svtools/htmlkywd.hxx              |  303 ++++++++++++++----------------
 svtools/source/svhtml/htmlkywd.cxx        |  244 ++++++++++--------------
 3 files changed, 256 insertions(+), 295 deletions(-)

New commits:
commit f583b298e9e84020cc989726984b8b8aa0247220
Author:     Caolán McNamara <caolan.mcnam...@collabora.com>
AuthorDate: Sat Jul 12 20:51:48 2025 +0100
Commit:     Noel Grandin <noel.gran...@collabora.co.uk>
CommitDate: Sat Jul 19 09:15:17 2025 +0200

    ensure aHTMLOptionTab is sorted at compile time
    
    static_assert that its sorted instead of sorting at load time.
    
    them it can be made constexpr
    
    Change-Id: I85970c5db2cb3f1998449875d5837935b61ee3f1
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/187786
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolan.mcnam...@collabora.com>
    (cherry picked from commit c64c74b28773913082e81510df49886766200614)
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/188042
    Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk>
    Tested-by: Jenkins CollaboraOffice <jenkinscollaboraoff...@gmail.com>

diff --git a/compilerplugins/clang/store/staticvar.cxx 
b/compilerplugins/clang/store/staticvar.cxx
index 774ab92245bb..d097989d9232 100644
--- a/compilerplugins/clang/store/staticvar.cxx
+++ b/compilerplugins/clang/store/staticvar.cxx
@@ -73,8 +73,6 @@ public:
             || fn == SRCDIR "/sw/source/uibase/docvw/srcedtw.cxx"
             // mutable
             || fn == SRCDIR "/forms/source/misc/limitedformats.cxx"
-            // aHTMLOptionTab is ordered by useful grouping, so let it sort at 
runtime
-            || fn == SRCDIR "/svtools/source/svhtml/htmlkywd.cxx"
             // TODO sorting some of these tables will be a lot of work...
             || fn == SRCDIR "/sw/source/filter/ww8/ww8par6.cxx"
             // this only triggers on older versions of clang, not sure why
@@ -83,8 +81,6 @@ public:
             // I tried doing this, but got very weird unit test failures, 
apparently sorting this table
             // disturbs some code elsewhere
             || fn == SRCDIR "/svx/source/unodraw/unoprov.cxx"
-            // aRTFTokenTab is ordered by useful grouping, so let it sort at 
runtime
-            || fn == SRCDIR "/svtools/source/svrtf/rtfkeywd.cxx")
             return;
         TraverseDecl(compiler.getASTContext().getTranslationUnitDecl());
     }
diff --git a/include/svtools/htmlkywd.hxx b/include/svtools/htmlkywd.hxx
index f4c24350bc55..e2ce4bd68e3c 100644
--- a/include/svtools/htmlkywd.hxx
+++ b/include/svtools/htmlkywd.hxx
@@ -405,163 +405,152 @@
 
 // HTML attribute tokens (=options)
 
-// attributes without value
-#define OOO_STRING_SVTOOLS_HTML_O_checked "checked"
-#define OOO_STRING_SVTOOLS_HTML_O_compact "compact"
-#define OOO_STRING_SVTOOLS_HTML_O_declare "declare"
-#define OOO_STRING_SVTOOLS_HTML_O_disabled "disabled"
-#define OOO_STRING_SVTOOLS_HTML_O_ismap "ismap"
-#define OOO_STRING_SVTOOLS_HTML_O_mayscript "mayscript"
-#define OOO_STRING_SVTOOLS_HTML_O_multiple "multiple"
-#define OOO_STRING_SVTOOLS_HTML_O_nohref "nohref"
-#define OOO_STRING_SVTOOLS_HTML_O_noresize "noresize"
-#define OOO_STRING_SVTOOLS_HTML_O_noshade "noshade"
-#define OOO_STRING_SVTOOLS_HTML_O_nowrap "nowrap"
-#define OOO_STRING_SVTOOLS_HTML_O_sdfixed "sdfixed"
-#define OOO_STRING_SVTOOLS_HTML_O_selected "selected"
-
-// attributes with a string as value
-#define OOO_STRING_SVTOOLS_HTML_O_accesskey "accesskey"
-#define OOO_STRING_SVTOOLS_HTML_O_accept "accept"
-#define OOO_STRING_SVTOOLS_HTML_O_alt "alt"
-#define OOO_STRING_SVTOOLS_HTML_O_axis "axis"
-#define OOO_STRING_SVTOOLS_HTML_O_char "char"
-#define OOO_STRING_SVTOOLS_HTML_O_charset "charset"
-#define OOO_STRING_SVTOOLS_HTML_O_class "class"
-#define OOO_STRING_SVTOOLS_HTML_O_code "code"
-#define OOO_STRING_SVTOOLS_HTML_O_codetype "codetype"
-#define OOO_STRING_SVTOOLS_HTML_O_content "content"
-#define OOO_STRING_SVTOOLS_HTML_O_coords "coords"
-#define OOO_STRING_SVTOOLS_HTML_O_enctype "enctype"
-#define OOO_STRING_SVTOOLS_HTML_O_face "face"
-#define OOO_STRING_SVTOOLS_HTML_O_frameborder "frameborder"
-#define OOO_STRING_SVTOOLS_HTML_O_httpequiv "http-equiv"
-#define OOO_STRING_SVTOOLS_HTML_O_language "language"
-#define OOO_STRING_SVTOOLS_HTML_O_name "name"
-#define OOO_STRING_SVTOOLS_HTML_O_prompt "prompt"
-#define OOO_STRING_SVTOOLS_HTML_O_shape "shape"
-#define OOO_STRING_SVTOOLS_HTML_O_standby "standby"
-#define OOO_STRING_SVTOOLS_HTML_O_style "style"
-#define OOO_STRING_SVTOOLS_HTML_O_title "title"
-#define OOO_STRING_SVTOOLS_HTML_O_value "value"
-#define OOO_STRING_SVTOOLS_HTML_O_SDval "sdval"
-#define OOO_STRING_SVTOOLS_HTML_O_DSval "data-sheets-value"
-#define OOO_STRING_SVTOOLS_HTML_O_SDnum "sdnum"
-#define OOO_STRING_SVTOOLS_HTML_O_DSnum "data-sheets-numberformat"
-#define OOO_STRING_SVTOOLS_HTML_O_DSformula "data-sheets-formula"
-#define OOO_STRING_SVTOOLS_HTML_O_sdlibrary "sdlibrary"
-#define OOO_STRING_SVTOOLS_HTML_O_sdmodule "sdmodule"
-#define OOO_STRING_SVTOOLS_HTML_O_sdevent "sdevent-"
-#define OOO_STRING_SVTOOLS_HTML_O_sdaddparam "sdaddparam-"
-
-// attributes with an SGML identifier as value
-#define OOO_STRING_SVTOOLS_HTML_O_id "id"
-#define OOO_STRING_SVTOOLS_HTML_O_target "target"
-#define OOO_STRING_SVTOOLS_HTML_O_to "to"
-
-// attributes with a URI as value
-#define OOO_STRING_SVTOOLS_HTML_O_action "action"
-#define OOO_STRING_SVTOOLS_HTML_O_archive "archive"
-#define OOO_STRING_SVTOOLS_HTML_O_background "background"
-#define OOO_STRING_SVTOOLS_HTML_O_classid "classid"
-#define OOO_STRING_SVTOOLS_HTML_O_codebase "codebase"
-#define OOO_STRING_SVTOOLS_HTML_O_data "data"
-#define OOO_STRING_SVTOOLS_HTML_O_href "href"
-#define OOO_STRING_SVTOOLS_HTML_O_script "script"
-#define OOO_STRING_SVTOOLS_HTML_O_src "src"
-#define OOO_STRING_SVTOOLS_HTML_O_usemap "usemap"
-
-// attributes with a colour as value (all Netscape)
-#define OOO_STRING_SVTOOLS_HTML_O_alink "alink"
-#define OOO_STRING_SVTOOLS_HTML_O_bgcolor "bgcolor"
-#define OOO_STRING_SVTOOLS_HTML_O_bordercolor "bordercolor"
-#define OOO_STRING_SVTOOLS_HTML_O_bordercolorlight "bordercolorlight"
-#define OOO_STRING_SVTOOLS_HTML_O_bordercolordark "bordercolordark"
-#define OOO_STRING_SVTOOLS_HTML_O_color "color"
-#define OOO_STRING_SVTOOLS_HTML_O_link "link"
-#define OOO_STRING_SVTOOLS_HTML_O_text "text"
-#define OOO_STRING_SVTOOLS_HTML_O_vlink "vlink"
-
-// attributes with a numerical value
-#define OOO_STRING_SVTOOLS_HTML_O_border "border"
-#define OOO_STRING_SVTOOLS_HTML_O_cellspacing "cellspacing"
-#define OOO_STRING_SVTOOLS_HTML_O_cellpadding "cellpadding"
-#define OOO_STRING_SVTOOLS_HTML_O_charoff "charoff"
-#define OOO_STRING_SVTOOLS_HTML_O_colspan "colspan"
-#define OOO_STRING_SVTOOLS_HTML_O_framespacing "framespacing"
-#define OOO_STRING_SVTOOLS_HTML_O_gutter "gutter"
-#define OOO_STRING_SVTOOLS_HTML_O_height "height"
-#define OOO_STRING_SVTOOLS_HTML_O_hspace "hspace"
-#define OOO_STRING_SVTOOLS_HTML_O_left "left"
-#define OOO_STRING_SVTOOLS_HTML_O_loop "loop"
-#define OOO_STRING_SVTOOLS_HTML_O_marginheight "marginheight"
-#define OOO_STRING_SVTOOLS_HTML_O_marginwidth "marginwidth"
-#define OOO_STRING_SVTOOLS_HTML_O_maxlength "maxlength"
-#define OOO_STRING_SVTOOLS_HTML_O_rowspan "rowspan"
-#define OOO_STRING_SVTOOLS_HTML_O_scrollamount "scrollamount"
-#define OOO_STRING_SVTOOLS_HTML_O_scrolldelay "scrolldelay"
-#define OOO_STRING_SVTOOLS_HTML_O_span "span"
-#define OOO_STRING_SVTOOLS_HTML_O_tabindex "tabindex"
-#define OOO_STRING_SVTOOLS_HTML_O_vspace "vspace"
-#define OOO_STRING_SVTOOLS_HTML_O_width "width"
-#define OOO_STRING_SVTOOLS_HTML_O_zindex "z-index"
-
-// attributes with enum values
-#define OOO_STRING_SVTOOLS_HTML_O_behavior "behavior"
-#define OOO_STRING_SVTOOLS_HTML_O_clear "clear"
-#define OOO_STRING_SVTOOLS_HTML_O_dir "dir"
-#define OOO_STRING_SVTOOLS_HTML_O_direction "direction"
-#define OOO_STRING_SVTOOLS_HTML_O_format "format"
-#define OOO_STRING_SVTOOLS_HTML_O_frame "frame"
-#define OOO_STRING_SVTOOLS_HTML_O_lang "lang"
-#define OOO_STRING_SVTOOLS_XHTML_O_lang "xml:lang"
-#define OOO_STRING_SVTOOLS_HTML_O_method "method"
-#define OOO_STRING_SVTOOLS_HTML_O_rel "rel"
-#define OOO_STRING_SVTOOLS_HTML_O_rev "rev"
-#define OOO_STRING_SVTOOLS_HTML_O_rules "rules"
-#define OOO_STRING_SVTOOLS_HTML_O_scrolling "scrolling"
-#define OOO_STRING_SVTOOLS_HTML_O_sdreadonly "readonly"
-#define OOO_STRING_SVTOOLS_HTML_O_subtype "subtype"
-#define OOO_STRING_SVTOOLS_HTML_O_type "type"
-#define OOO_STRING_SVTOOLS_HTML_O_valign "valign"
-#define OOO_STRING_SVTOOLS_HTML_O_valuetype "valuetype"
-#define OOO_STRING_SVTOOLS_HTML_O_wrap "wrap"
-#define OOO_STRING_SVTOOLS_XHTML_O_xml_space "xml:space"
-
-// attributes with script code as value
-#define OOO_STRING_SVTOOLS_HTML_O_onblur "onblur"
-#define OOO_STRING_SVTOOLS_HTML_O_onchange "onchange"
-#define OOO_STRING_SVTOOLS_HTML_O_onclick "onclick"
-#define OOO_STRING_SVTOOLS_HTML_O_onfocus "onfocus"
-#define OOO_STRING_SVTOOLS_HTML_O_onload "onload"
-#define OOO_STRING_SVTOOLS_HTML_O_onmouseover "onmouseover"
-#define OOO_STRING_SVTOOLS_HTML_O_onreset "onreset"
-#define OOO_STRING_SVTOOLS_HTML_O_onselect "onselect"
-#define OOO_STRING_SVTOOLS_HTML_O_onsubmit "onsubmit"
-#define OOO_STRING_SVTOOLS_HTML_O_onunload "onunload"
-#define OOO_STRING_SVTOOLS_HTML_O_onabort "onabort"
-#define OOO_STRING_SVTOOLS_HTML_O_onerror "onerror"
-#define OOO_STRING_SVTOOLS_HTML_O_onmouseout "onmouseout"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonblur "sdonblur"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonchange "sdonchange"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonclick "sdonclick"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonfocus "sdonfocus"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonload "sdonload"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseover "sdonmouseover"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonreset "sdonreset"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonselect "sdonselect"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonsubmit "sdonsubmit"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonunload "sdonunload"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonabort "sdonabort"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonerror "sdonerror"
-#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseout "sdonmouseout"
-
-// attributes with context-dependent values
-#define OOO_STRING_SVTOOLS_HTML_O_align "align"
-#define OOO_STRING_SVTOOLS_HTML_O_cols "cols"
-#define OOO_STRING_SVTOOLS_HTML_O_rows "rows"
-#define OOO_STRING_SVTOOLS_HTML_O_start "start"
-#define OOO_STRING_SVTOOLS_HTML_O_size "size"
+#define OOO_STRING_SVTOOLS_HTML_O_accept "accept" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_accesskey "accesskey" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_action "action" // attribute with a URI as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_align "align" // attribute with 
context-dependent values
+#define OOO_STRING_SVTOOLS_HTML_O_alink "alink" // attribute with a colour as 
value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_alt "alt" // attribute with a string as value
+#define OOO_STRING_SVTOOLS_HTML_O_archive "archive" // attribute with a URI as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_axis "axis" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_background "background" // attribute with a 
URI as value
+#define OOO_STRING_SVTOOLS_HTML_O_behavior "behavior" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_bgcolor "bgcolor" // attribute with a colour 
as value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_border "border" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_bordercolor                                  
                    \
+    "bordercolor" // attribute with a colour as value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_bordercolordark                              
                    \
+    "bordercolordark" // attribute with a colour as value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_bordercolorlight                             
                    \
+    "bordercolorlight" // attribute with a colour as value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_cellpadding "cellpadding" // attribute with 
a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_cellspacing "cellspacing" // attribute with 
a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_char "char" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_charoff "charoff" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_charset "charset" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_checked "checked" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_class "class" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_classid "classid" // attribute with a URI as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_clear "clear" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_code "code" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_codebase "codebase" // attribute with a URI 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_codetype "codetype" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_color "color" // attribute with a colour as 
value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_cols "cols" // attribute with 
context-dependent values
+#define OOO_STRING_SVTOOLS_HTML_O_colspan "colspan" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_compact "compact" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_content "content" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_coords "coords" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_data "data" // attribute with a URI as value
+#define OOO_STRING_SVTOOLS_HTML_O_DSformula                                    
                    \
+    "data-sheets-formula" // attribute with a string as value
+#define OOO_STRING_SVTOOLS_HTML_O_DSnum                                        
                    \
+    "data-sheets-numberformat" // attribute with a string as value
+#define OOO_STRING_SVTOOLS_HTML_O_DSval "data-sheets-value" // attribute with 
a string as value
+#define OOO_STRING_SVTOOLS_HTML_O_declare "declare" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_dir "dir" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_direction "direction" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_disabled "disabled" // attribute without 
value
+#define OOO_STRING_SVTOOLS_HTML_O_enctype "enctype" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_face "face" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_format "format" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_frame "frame" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_frameborder "frameborder" // attribute with 
a string as value
+#define OOO_STRING_SVTOOLS_HTML_O_framespacing "framespacing" // attribute 
with a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_gutter "gutter" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_height "height" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_href "href" // attribute with a URI as value
+#define OOO_STRING_SVTOOLS_HTML_O_hspace "hspace" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_httpequiv "http-equiv" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_id "id" // attribute with an SGML identifier 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_ismap "ismap" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_lang "lang" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_language "language" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_left "left" // attribute with a numerical 
value
+#define OOO_STRING_SVTOOLS_HTML_O_link "link" // attribute with a colour as 
value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_loop "loop" // attribute with a numerical 
value
+#define OOO_STRING_SVTOOLS_HTML_O_marginheight "marginheight" // attribute 
with a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_marginwidth "marginwidth" // attribute with 
a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_maxlength "maxlength" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_mayscript "mayscript" // attribute without 
value
+#define OOO_STRING_SVTOOLS_HTML_O_method "method" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_multiple "multiple" // attribute without 
value
+#define OOO_STRING_SVTOOLS_HTML_O_name "name" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_nohref "nohref" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_noresize "noresize" // attribute without 
value
+#define OOO_STRING_SVTOOLS_HTML_O_noshade "noshade" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_nowrap "nowrap" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_onabort "onabort" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onblur "onblur" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onchange "onchange" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onclick "onclick" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onerror "onerror" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onfocus "onfocus" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onload "onload" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onmouseout "onmouseout" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onmouseover "onmouseover" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onreset "onreset" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onselect "onselect" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onsubmit "onsubmit" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_onunload "onunload" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_prompt "prompt" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_sdreadonly "readonly" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_rel "rel" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_rev "rev" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_rows "rows" // attribute with 
context-dependent values
+#define OOO_STRING_SVTOOLS_HTML_O_rowspan "rowspan" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_rules "rules" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_script "script" // attribute with a URI as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_scrollamount "scrollamount" // attribute 
with a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_scrolldelay "scrolldelay" // attribute with 
a numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_scrolling "scrolling" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_sdaddparam "sdaddparam-" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_sdevent "sdevent-" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_sdfixed "sdfixed" // attribute without value
+#define OOO_STRING_SVTOOLS_HTML_O_sdlibrary "sdlibrary" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_sdmodule "sdmodule" // attribute with a 
string as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDnum "sdnum" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonabort "sdonabort" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonblur "sdonblur" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonchange "sdonchange" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonclick "sdonclick" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonerror "sdonerror" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonfocus "sdonfocus" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonload "sdonload" // attribute with script 
code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseout "sdonmouseout" // attribute 
with script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonmouseover                                
                    \
+    "sdonmouseover" // attribute with script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonreset "sdonreset" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonselect "sdonselect" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonsubmit "sdonsubmit" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDonunload "sdonunload" // attribute with 
script code as value
+#define OOO_STRING_SVTOOLS_HTML_O_SDval "sdval" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_selected "selected" // attribute without 
value
+#define OOO_STRING_SVTOOLS_HTML_O_shape "shape" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_size "size" // attribute with 
context-dependent values
+#define OOO_STRING_SVTOOLS_HTML_O_span "span" // attribute with a numerical 
value
+#define OOO_STRING_SVTOOLS_HTML_O_src "src" // attribute with a URI as value
+#define OOO_STRING_SVTOOLS_HTML_O_standby "standby" // attribute with a string 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_start "start" // attribute with 
context-dependent values
+#define OOO_STRING_SVTOOLS_HTML_O_style "style" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_subtype "subtype" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_tabindex "tabindex" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_target "target" // attribute with an SGML 
identifier as value
+#define OOO_STRING_SVTOOLS_HTML_O_text "text" // attribute with a colour as 
value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_title "title" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_to "to" // attribute with an SGML identifier 
as value
+#define OOO_STRING_SVTOOLS_HTML_O_type "type" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_usemap "usemap" // attribute with a URI as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_valign "valign" // attribute with enum values
+#define OOO_STRING_SVTOOLS_HTML_O_value "value" // attribute with a string as 
value
+#define OOO_STRING_SVTOOLS_HTML_O_valuetype "valuetype" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_HTML_O_vlink "vlink" // attribute with a colour as 
value (Netscape)
+#define OOO_STRING_SVTOOLS_HTML_O_vspace "vspace" // attribute with a 
numerical value
+#define OOO_STRING_SVTOOLS_HTML_O_width "width" // attribute with a numerical 
value
+#define OOO_STRING_SVTOOLS_HTML_O_wrap "wrap" // attribute with enum values
+#define OOO_STRING_SVTOOLS_XHTML_O_lang "xml:lang" // attribute with enum 
values
+#define OOO_STRING_SVTOOLS_XHTML_O_xml_space "xml:space" // attribute with 
enum values
+#define OOO_STRING_SVTOOLS_HTML_O_zindex "z-index" // attribute with a 
numerical value
 
 // values of <INPUT TYPE=...>
 #define OOO_STRING_SVTOOLS_HTML_IT_text "text"
diff --git a/svtools/source/svhtml/htmlkywd.cxx 
b/svtools/source/svhtml/htmlkywd.cxx
index ad2689f0e907..f3845f10f5eb 100644
--- a/svtools/source/svhtml/htmlkywd.cxx
+++ b/svtools/source/svhtml/htmlkywd.cxx
@@ -459,178 +459,154 @@ sal_Unicode GetHTMLCharName( std::u16string_view rName )
     return search<sal_Unicode>( aHTMLCharNameTab, rName, 0);
 }
 
-// Flag: Options table has already been sorted
-static bool bSortOptionKeyWords = false;
-
 using HTML_OptionEntry = TokenEntry<HtmlOptionId>;
 
-static HTML_OptionEntry aHTMLOptionTab[] = {
+constexpr HTML_OptionEntry aHTMLOptionTab[] = {
 
-// Attributes without value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_checked),   
HtmlOptionId::CHECKED},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_compact),   
HtmlOptionId::COMPACT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_declare),   
HtmlOptionId::DECLARE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_disabled),  
HtmlOptionId::DISABLED},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_ismap),     
HtmlOptionId::ISMAP},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_mayscript), 
HtmlOptionId::MAYSCRIPT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_multiple),  
HtmlOptionId::MULTIPLE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_nohref),        
HtmlOptionId::NOHREF}, // Netscape 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_noresize),  
HtmlOptionId::NORESIZE}, // Netscape 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_noshade),   
HtmlOptionId::NOSHADE}, // Netscape 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_nowrap),        
HtmlOptionId::NOWRAP},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdfixed),   
HtmlOptionId::SDFIXED},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_selected),      
HtmlOptionId::SELECTED},
-
-// Attributes with a string value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_accept),        
HtmlOptionId::ACCEPT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_accept),    
HtmlOptionId::ACCEPT},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_accesskey), 
HtmlOptionId::ACCESSKEY},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_action),    
HtmlOptionId::ACTION},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_align),     
HtmlOptionId::ALIGN},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_alink),     
HtmlOptionId::ALINK},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_alt),       
HtmlOptionId::ALT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_archive),   
HtmlOptionId::ARCHIVE},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_axis),      
HtmlOptionId::AXIS},
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_background),HtmlOptionId::BACKGROUND},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_behavior),  
HtmlOptionId::BEHAVIOR}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bgcolor),   
HtmlOptionId::BGCOLOR},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_border),    
HtmlOptionId::BORDER},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolor), 
HtmlOptionId::BORDERCOLOR}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolordark), 
HtmlOptionId::BORDERCOLORDARK}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolorlight), 
HtmlOptionId::BORDERCOLORLIGHT}, // IExplorer 2.0
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_cellpadding),HtmlOptionId::CELLPADDING}, // HTML 3 
Table Model Draft
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_cellspacing),HtmlOptionId::CELLSPACING}, // HTML 3 
Table Model Draft
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_char),      
HtmlOptionId::CHAR}, // HTML 3 Table Model Draft
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_charoff),   
HtmlOptionId::CHAROFF}, // HTML 3 Table Model Draft
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_charset),   
HtmlOptionId::CHARSET},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_checked),   
HtmlOptionId::CHECKED},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_class),     
HtmlOptionId::CLASS},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_classid),   
HtmlOptionId::CLASSID},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_clear),     
HtmlOptionId::CLEAR},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_code),      
HtmlOptionId::CODE}, // HotJava
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_codebase),  
HtmlOptionId::CODEBASE}, // HotJava
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_codetype),  
HtmlOptionId::CODETYPE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_color),     
HtmlOptionId::COLOR},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_cols),      
HtmlOptionId::COLS}, // Netscape 2.0 vs HTML 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_colspan),   
HtmlOptionId::COLSPAN},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_compact),   
HtmlOptionId::COMPACT},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_content),   
HtmlOptionId::CONTENT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_coords),        
HtmlOptionId::COORDS}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_coords),    
HtmlOptionId::COORDS}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_data),      
HtmlOptionId::DATA},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSformula), 
HtmlOptionId::DSFORMULA},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSnum),     
HtmlOptionId::DSNUM},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSval),     
HtmlOptionId::DSVAL},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_declare),   
HtmlOptionId::DECLARE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_dir),       
HtmlOptionId::DIR}, // HTML 3 Table Model Draft
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_direction), 
HtmlOptionId::DIRECTION}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_disabled),  
HtmlOptionId::DISABLED},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_enctype),   
HtmlOptionId::ENCTYPE},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_face),      
HtmlOptionId::FACE}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_format),    
HtmlOptionId::FORMAT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_frame),     
HtmlOptionId::FRAME}, // HTML 3 Table Model Draft
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_frameborder), 
HtmlOptionId::FRAMEBORDER}, // IExplorer 3.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_framespacing), 
HtmlOptionId::FRAMESPACING}, // IExplorer 3.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_gutter),    
HtmlOptionId::GUTTER}, // Netscape 3.0b5
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_height),    
HtmlOptionId::HEIGHT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_href),      
HtmlOptionId::HREF},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_hspace),    
HtmlOptionId::HSPACE}, // Netscape
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_httpequiv), 
HtmlOptionId::HTTPEQUIV},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_id),        
HtmlOptionId::ID},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_ismap),     
HtmlOptionId::ISMAP},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_lang),      
HtmlOptionId::LANG},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_language),  
HtmlOptionId::LANGUAGE}, // JavaScript
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_name),      
HtmlOptionId::NAME},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_prompt),        
HtmlOptionId::PROMPT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_shape),     
HtmlOptionId::SHAPE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_standby),   
HtmlOptionId::STANDBY},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_style),     
HtmlOptionId::STYLE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_title),     
HtmlOptionId::TITLE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_value),     
HtmlOptionId::VALUE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDval),     
HtmlOptionId::SDVAL}, // StarDiv NumberValue
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSval),     
HtmlOptionId::DSVAL},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDnum),     
HtmlOptionId::SDNUM}, // StarDiv NumberFormat
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSnum),     
HtmlOptionId::DSNUM},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_DSformula), 
HtmlOptionId::DSFORMULA},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdlibrary), 
HtmlOptionId::SDLIBRARY},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdmodule),  
HtmlOptionId::SDMODULE},
-
-// Attributes with a SGML identifier value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_id),            
HtmlOptionId::ID},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_target),        
HtmlOptionId::TARGET}, // Netscape 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_to),            
HtmlOptionId::TO},
-
-// Attributes with a URI value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_action),        
HtmlOptionId::ACTION},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_archive),       
HtmlOptionId::ARCHIVE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_background),    
HtmlOptionId::BACKGROUND},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_classid),   
HtmlOptionId::CLASSID},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_codebase),  
HtmlOptionId::CODEBASE}, // HotJava
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_data),      
HtmlOptionId::DATA},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_href),      
HtmlOptionId::HREF},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_script),        
HtmlOptionId::SCRIPT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_src),       
HtmlOptionId::SRC},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_usemap),        
HtmlOptionId::USEMAP}, // Netscape 2.0
-
-// Attributes with a color value (all Netscape versions)
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_alink),     
HtmlOptionId::ALINK},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bgcolor),   
HtmlOptionId::BGCOLOR},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolor), 
HtmlOptionId::BORDERCOLOR}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolorlight), 
HtmlOptionId::BORDERCOLORLIGHT}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_bordercolordark), 
HtmlOptionId::BORDERCOLORDARK}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_color),     
HtmlOptionId::COLOR},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_link),      
HtmlOptionId::LINK},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_text),      
HtmlOptionId::TEXT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_vlink),     
HtmlOptionId::VLINK},
-
-// Attributes with a numerical value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_border),        
HtmlOptionId::BORDER},
-    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_cellspacing),HtmlOptionId::CELLSPACING}, // HTML 3 
Table Model Draft
-    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_cellpadding),HtmlOptionId::CELLPADDING}, // HTML 3 
Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_charoff),   
HtmlOptionId::CHAROFF}, // HTML 3 Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_colspan),   
HtmlOptionId::COLSPAN},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_framespacing), 
HtmlOptionId::FRAMESPACING}, // IExplorer 3.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_gutter),        
HtmlOptionId::GUTTER}, // Netscape 3.0b5
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_height),        
HtmlOptionId::HEIGHT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_hspace),        
HtmlOptionId::HSPACE}, // Netscape
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_left),      
HtmlOptionId::LEFT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_link),      
HtmlOptionId::LINK},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_loop),      
HtmlOptionId::LOOP}, // IExplorer 2.0
     {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_marginheight),HtmlOptionId::MARGINHEIGHT}, // 
Netscape 2.0
     {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_marginwidth),HtmlOptionId::MARGINWIDTH}, // Netscape 
2.0
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_maxlength), 
HtmlOptionId::MAXLENGTH},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rowspan),   
HtmlOptionId::ROWSPAN},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrollamount), 
HtmlOptionId::SCROLLAMOUNT}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrolldelay), 
HtmlOptionId::SCROLLDELAY}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_span),      
HtmlOptionId::SPAN}, // HTML 3 Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_tabindex),  
HtmlOptionId::TABINDEX},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_vspace),        
HtmlOptionId::VSPACE}, // Netscape
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_width),     
HtmlOptionId::WIDTH},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_zindex),        
HtmlOptionId::ZINDEX},
-
-// Attributes with enum values
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_behavior),  
HtmlOptionId::BEHAVIOR}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_clear),     
HtmlOptionId::CLEAR},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_dir),       
HtmlOptionId::DIR}, // HTML 3 Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_direction),     
HtmlOptionId::DIRECTION}, // IExplorer 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_format),        
HtmlOptionId::FORMAT},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_frame),     
HtmlOptionId::FRAME}, // HTML 3 Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_lang),      
HtmlOptionId::LANG},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_method),        
HtmlOptionId::METHOD},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rel),       
HtmlOptionId::REL},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rev),       
HtmlOptionId::REV},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rules),     
HtmlOptionId::RULES}, // HTML 3 Table Model Draft
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrolling), 
HtmlOptionId::SCROLLING}, // Netscape 2.0
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdreadonly),    
HtmlOptionId::SDREADONLY},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_subtype),   
HtmlOptionId::SUBTYPE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_type),      
HtmlOptionId::TYPE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_valign),        
HtmlOptionId::VALIGN},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_valuetype), 
HtmlOptionId::VALUETYPE},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_wrap),      
HtmlOptionId::WRAP},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_XHTML_O_xml_space), 
HtmlOptionId::XML_SPACE},
-
-// Attributes with script code value
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onblur),        
HtmlOptionId::ONBLUR}, // JavaScript
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_mayscript), 
HtmlOptionId::MAYSCRIPT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_method),    
HtmlOptionId::METHOD},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_multiple),  
HtmlOptionId::MULTIPLE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_name),      
HtmlOptionId::NAME},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_nohref),    
HtmlOptionId::NOHREF}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_noresize),  
HtmlOptionId::NORESIZE}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_noshade),   
HtmlOptionId::NOSHADE}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_nowrap),    
HtmlOptionId::NOWRAP},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onabort),   
HtmlOptionId::ONABORT}, // JavaScript
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onblur),    
HtmlOptionId::ONBLUR}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onchange),  
HtmlOptionId::ONCHANGE}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onclick),   
HtmlOptionId::ONCLICK}, // JavaScript
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onerror),   
HtmlOptionId::ONERROR}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onfocus),   
HtmlOptionId::ONFOCUS}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onload),    
HtmlOptionId::ONLOAD}, // JavaScript
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_onmouseout),HtmlOptionId::ONMOUSEOUT}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onmouseover), 
HtmlOptionId::ONMOUSEOVER}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onreset),   
HtmlOptionId::ONRESET}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onselect),  
HtmlOptionId::ONSELECT}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onsubmit),  
HtmlOptionId::ONSUBMIT}, // JavaScript
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onunload),  
HtmlOptionId::ONUNLOAD}, // JavaScript
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onabort),   
HtmlOptionId::ONABORT}, // JavaScript
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onerror),   
HtmlOptionId::ONERROR}, // JavaScript
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_onmouseout),    
HtmlOptionId::ONMOUSEOUT}, // JavaScript
-
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonblur),      
HtmlOptionId::SDONBLUR}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonchange),    
HtmlOptionId::SDONCHANGE}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonclick),         
HtmlOptionId::SDONCLICK}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonfocus),         
HtmlOptionId::SDONFOCUS}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonload),      
HtmlOptionId::SDONLOAD}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonmouseover),     
HtmlOptionId::SDONMOUSEOVER}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonreset),     
HtmlOptionId::SDONRESET}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonselect),        
HtmlOptionId::SDONSELECT}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonsubmit),        
HtmlOptionId::SDONSUBMIT}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonunload),        
HtmlOptionId::SDONUNLOAD}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonabort),     
HtmlOptionId::SDONABORT}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonerror),         
HtmlOptionId::SDONERROR}, // StarBasic
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonmouseout),  
HtmlOptionId::SDONMOUSEOUT}, // StarBasic
-
-// Attributes with context sensitive values
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_align),     
HtmlOptionId::ALIGN},
-    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_cols),      
HtmlOptionId::COLS}, // Netscape 2.0 vs HTML 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_prompt),    
HtmlOptionId::PROMPT},
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_sdreadonly),HtmlOptionId::SDREADONLY},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rel),       
HtmlOptionId::REL},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rev),       
HtmlOptionId::REV},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rows),      
HtmlOptionId::ROWS}, // Netscape 2.0 vs HTML 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rowspan),   
HtmlOptionId::ROWSPAN},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_rules),     
HtmlOptionId::RULES}, // HTML 3 Table Model Draft
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_script),    
HtmlOptionId::SCRIPT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrollamount), 
HtmlOptionId::SCROLLAMOUNT}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrolldelay), 
HtmlOptionId::SCROLLDELAY}, // IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_scrolling), 
HtmlOptionId::SCROLLING}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdfixed),   
HtmlOptionId::SDFIXED},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdlibrary), 
HtmlOptionId::SDLIBRARY},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_sdmodule),  
HtmlOptionId::SDMODULE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDnum),     
HtmlOptionId::SDNUM}, // StarDiv NumberFormat
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonabort), 
HtmlOptionId::SDONABORT}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonblur),  
HtmlOptionId::SDONBLUR}, // StarBasic
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_SDonchange),HtmlOptionId::SDONCHANGE}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonclick), 
HtmlOptionId::SDONCLICK}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonerror), 
HtmlOptionId::SDONERROR}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonfocus), 
HtmlOptionId::SDONFOCUS}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonload),  
HtmlOptionId::SDONLOAD}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonmouseout), 
HtmlOptionId::SDONMOUSEOUT}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonmouseover), 
HtmlOptionId::SDONMOUSEOVER}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDonreset), 
HtmlOptionId::SDONRESET}, // StarBasic
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_SDonselect),HtmlOptionId::SDONSELECT}, // StarBasic
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_SDonsubmit),HtmlOptionId::SDONSUBMIT}, // StarBasic
+    {std::u16string_view(u"" 
OOO_STRING_SVTOOLS_HTML_O_SDonunload),HtmlOptionId::SDONUNLOAD}, // StarBasic
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_SDval),     
HtmlOptionId::SDVAL}, // StarDiv NumberValue
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_selected),  
HtmlOptionId::SELECTED},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_shape),     
HtmlOptionId::SHAPE},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_size),      
HtmlOptionId::SIZE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_span),      
HtmlOptionId::SPAN}, // HTML 3 Table Model Draft
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_src),       
HtmlOptionId::SRC},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_standby),   
HtmlOptionId::STANDBY},
     {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_start),     
HtmlOptionId::START}, // Netscape 2.0 vs IExplorer 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_style),     
HtmlOptionId::STYLE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_subtype),   
HtmlOptionId::SUBTYPE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_tabindex),  
HtmlOptionId::TABINDEX},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_target),    
HtmlOptionId::TARGET}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_text),      
HtmlOptionId::TEXT},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_title),     
HtmlOptionId::TITLE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_to),        
HtmlOptionId::TO},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_type),      
HtmlOptionId::TYPE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_usemap),    
HtmlOptionId::USEMAP}, // Netscape 2.0
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_valign),    
HtmlOptionId::VALIGN},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_value),     
HtmlOptionId::VALUE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_valuetype), 
HtmlOptionId::VALUETYPE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_vlink),     
HtmlOptionId::VLINK},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_vspace),    
HtmlOptionId::VSPACE}, // Netscape
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_width),     
HtmlOptionId::WIDTH},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_wrap),      
HtmlOptionId::WRAP},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_XHTML_O_xml_space), 
HtmlOptionId::XML_SPACE},
+    {std::u16string_view(u"" OOO_STRING_SVTOOLS_HTML_O_zindex),    
HtmlOptionId::ZINDEX}
 };
 
+static_assert(std::is_sorted(std::begin(aHTMLOptionTab), 
std::end(aHTMLOptionTab),
+                             sortCompare<HtmlOptionId>));
+
 HtmlOptionId GetHTMLOption( std::u16string_view rName )
 {
-    if( !bSortOptionKeyWords )
-    {
-        std::sort( std::begin(aHTMLOptionTab), std::end(aHTMLOptionTab), 
sortCompare<HtmlOptionId> );
-        bSortOptionKeyWords = true;
-    }
-
     return search( aHTMLOptionTab, rName, HtmlOptionId::UNKNOWN);
 }
 

Reply via email to