TyXML now follows the current specifications: the WHATWG living standard for HTML, and SVG 2 with the Filter Effects module for SVG, whose support had not moved since SVG 1.1.
hidden attribute takes an enumerated argument ([`Hidden | `Until_found]) instead of no argument, and contenteditable takes an enumerated argument ([`True | `False | `Plaintext_only]) instead of a boolean, so that the until-found and plaintext-only states can be expresseda_itemtype and a_ping take an Xml.uri list instead of a string list and go through Xml.uris_attrib, like every other URL-valued attribute. Tyxml.Html is unaffected, its Xml.uri is stringa_href, a_xlink_href, a_xml_base, a_xlink_role, a_xlink_arcrole and the a_ping this release adds to the SVG a element take an Xml.uri, where they used to take the iri type, which is string. The presentation attributes that accept a funciri such as url(#id) or a keyword such as none, that is clip-path, mask and the marker-* ones, keep iriSvg.Info declared SVG 1.1 and every printed document carried the SVG 1.1 DTD, which forbids the SVG 2 elements and attributes TyXML now emits, and SVG 2 defines no DTD. Info.version and Info.standard name SVG 2Svg_types.*_content types are widened along with the content models they describe: the SVG element functions use them directly, there is no _content_fun on that side. Code that names one of them and constrains it with = has to be updateda_baseFrenquency becomes a_baseFrequency, a_externalRessourcesRequired becomes a_externalResourcesRequired, the stroke-linejoin value `Bever becomes `Bevel, and the types Html_types.subressource_integrity and Svg_types.paint_whitout_icc become subresource_integrity and paint_without_iccWrapped_functions module type has four new functions, which the implementations of the functorial interface must provide: string_of_blocking and string_of_ol_type for HTML, unoption_string and string_of_semicolonstrings for SVGs, bdi, search, data, slot, and track with its kind, srclang (as a_track_srclang) and default attributes, audio and video taking an optional ?tracks argument. meta_itemprop is the form of meta carrying an itemprop attribute, which the specification allows wherever phrasing content is expected and not only in the head (#343 by toastal)popover, inert, enterkeyhint, autocapitalize, autocorrect, writingsuggestions, nonce, slot and is, the microdata attributes itemscope, itemtype, itemid, itemprop and itemref, the CSS shadow parts attributes part and exportparts, and the `Auto value of dir (#341 by @SylvainBoilard for popover, #343 by toastal for microdata)popovertarget and popovertargetaction on buttons and inputs, command and commandfor (invoker commands) on buttons, loading, decoding and fetchpriority on images, srcdoc, allow and loading on iframes, as, imagesrcset and imagesizes on links (a_as), nomodule on scripts, blocking on links, scripts and styles, ping on a and area, dirname on inputs and textareas, capture (W3C HTML Media Capture) on inputs, a_ol_type on ordered lists, abbr on th cells, closedby on dialogs, media on meta, name on details, playsinline and disablepictureinpicture on videos, disableremoteplayback on audios and videos, and the declarative shadow DOM attributes on templates (shadowrootmode, shadowrootdelegatesfocus, shadowrootclonable and shadowrootserializable). Also allow crossorigin, usemap and referrerpolicy on images, referrerpolicy on a and area, and autocomplete on selects and textareas (#341 by @SylvainBoilard for name on details, fixes #268)a_onpointerdown and its siblings), a_onwheel, a_onauxclick, and the global handlers that were missing (a_onbeforeinput, a_onbeforematch, a_onbeforetoggle, a_oncancel, a_oncontextlost, a_oncontextrestored, a_oncopy, a_oncut, a_onpaste, a_oncuechange, a_onscrollend, a_onsecuritypolicyviolation, a_onslotchange and a_ontoggle), plus a_onlanguagechange, a_onrejectionhandled and a_onunhandledrejection on bodydialog for method and formmethod, and the newer sandbox tokens (allow-downloads, allow-modals, allow-orientation-lock, allow-popups-to-escape-sandbox, allow-presentation, allow-top-navigation-by-user-activation and allow-top-navigation-to-custom-protocols)div groups dt and dd inside dl, the script-supporting elements (script, template) are accepted in dl, ol, ul, menu, table and its row groups, tr, select and optgroup, hgroup accepts p, and select accepts hr. The _content types keep their previous value, only the types the element functions use are widened (#344 by toastal, fixes #342 and #321)scope attribute, which is valid on table header cells in the living standarda_version, a_xml_space and a_scrolling, which produce a type tag that is in no attribute category, so no element ever accepted themmask, feMergeNode and feDropShadow. mask was declared in Svg_types but the element itself was missing, and feMerge could be given no child at all since feMergeNode did not existbaseline-shift, clip-rule, color, color-interpolation, color-interpolation-filters, color-rendering, cursor, direction, display, fill-opacity, filter, flood-color, flood-opacity, font-size-adjust, image-rendering, letter-spacing, lighting-color, marker-end, marker-mid, marker-start, mask, opacity, overflow, pointer-events, shape-rendering, unicode-bidi, visibility, word-spacing and writing-mode) and the ones new in SVG 2 (paint-order, text-overflow, transform-origin, vector-effect and white-space). The ones SVG 2 removed are added as deprecated: clip, color-profile, enable-background, glyph-orientation-horizontal, glyph-orientation-vertical and kerning (#333 by Martin @MBodin Bodin for clip-path)tabindex and autofocus global attributes, lang becomes global, ARIA support (a_role and a_aria), the SVG 2 link attributes on the a element (download, hreflang, ping, referrerpolicy, rel and type), crossorigin, decoding and fetchpriority, fr on radial gradients, side and path on textPath, and the SVG 2 geometry attributes on symbol (x, y, width, height, refX, refY)a_end (SMIL timing), a_z (light sources), a_filterUnits, a_title (on style), a_origin, a_panose_1, a_descent, and the deprecated a_xlink_type, a_xlink_role and a_xlink_arcrolemiter-clip and arcs for stroke-linejoin, all the CSS blend modes for the mode attribute of feBlend, and text-top and text-bottom for alignment-baseline and dominant-baselinesvg elementclipPath, marker, mask, script and style; use and image accept clipPath, mask, script and style; text elements accept paint servers, script and style; filter primitives accept descriptive elements, animate, script and set; gradients, stop and clipPath accept scriptvalues, keyTimes and keySplines animation attributes with semicolons, as SMIL requires, instead of commas (#308 by @rand00)externalResourcesRequired, filterRes, zoomAndPan, the onzoom, onactivate, onfocusin and onfocusout event handlers, and the cursor and animateColor elements. Conversely, undeprecate a_onload: the load event is still fired on SVG elementsarea element could not be used at all: it had no href attribute, and its type tag was in no content model, so a map containing areas fitted nowhere. It is now phrasing content, and its signature uses area_attrib instead of repeating a shorter list that left out download, ping and referrerpolicy (fixes part of #184)li children of menu could not be built: the `Lis branch required an li whose attributes were a subset of the common ones, excluding the value attribute that li always allowsreversed (emitted reserved), the allow-scripts sandbox token (allow-script) and, in SVG, zoomAndPan, requiredExtensions, externalResourcesRequired, edgeMode (emitted targetY), filterRes, target (emitted xlink:target), glyph-name and the font-face-format element (emitted font-face-uri). Several SVG attribute values were too: the hyphens missing from the rendering-intent and dominant-baseline values, the case of the in and in2 keywords (SourceGraphic and the other built-in inputs), and `Align, emitted as the empty string (Hugo @hhugo Heuzard)a_edgeMode, a_preserveAlpha, a_filterRes, a_target, a_glyph_name, a_arabic_form, a_requiredExtensions, a_xlink_title and a_low unusable, and some element type tags were misspelled or duplicated (feFuncR, feFuncG and feFuncB were all defined as `FeFuncA) (Hugo @hhugo Heuzard)symbol element accepted neither the core attributes, so no id, which made it impossible to reference, nor the presentation and event attributes, nor shape childrenxml:base, xml:lang and xml:space attributes and the touch event handler attributes of SVG had type tags listed in no attribute category, which made them unusable on every elementXml_print.compose_decl emitted a literal \n instead of a newline, which made the XML declaration invalid (#348 by Martin @MBodin Bodin)Html used as an element name was mistaken for a user-defined component: the test lowercased the name and then compared it with a capitalised string, so it never matchedwhitout in a type definition (#324 by Martin @MBodin Bodin)subresource and various English orthographic mistakes (#345 by toastal)Unsafe gains uris_attrib, the escape hatch that was missing for an attribute holding a space-separated list of URLs, next to uri_attribviewBox, maskUnits, stdDeviation, gradientTransform, preserveAspectRatio, refX, markerWidth and many others were rejected[%svg "<g> </g>"] failed to typecheck. Whitespace is still significant in text, tspan, textPath, desc, title, style and script (#331 by Martin @MBodin Bodin, fixes #330)transform attribute whose arguments were comma separated, such as translate(1,1), was rejected. Any whitespace, and not only the space character, is now accepted around the separators of list-valued attributes (#328 by Martin @MBodin Bodin, fixes #326)transform="translate(1,2)rotate(45)" used to be accepted and silently turned into valid outputvalues, keyTimes and keySplines animation attributes are split on semicolons, where they used to be split on spaces (#308 by @rand00)option is accepted, as for script and textarea: an option carrying a label and a value attribute has no content, which is the usual form inside a datalist (fixes #228)linktype for the rel attribute (Leon @LogicalOverflow Vack)autocomplete attribute on <input> elements (#302 by Aron @aronerben Erben)<animate> (by the way, deprecate animation et al. in favor of animate et al.) (#306 by Idir @ilankri Lankri)dialog element and onclose attribute (#301 by Julien Sagot)_ character on attribute name) (#295 Chas @cemerick Emerick)type attribute on <script> elements (#293 by Ulrik @ulrikstrid Strid and Chas @cemerick Emerick)fill-rule attribute (#294 by Eric @dedbox Griffis)translate attribute (#281 by Javier @jchavarri Chávarri)inputmodes (#279 by Joel @joelburget Burget)picture element (#263 by Stéphane @slegrand45 Legrand)tyxml-jsx package (#254 by Joris Giovannangeli and Gabriel Radanne with help from Ulrik Strid and Louis Roché)allowfullscreen, allowpaymentrequest, referrerpolicy attributes (#242 by Thibault Suzanne)crossorigin attribute for script element (#243 by Thibault Suzanne)template element (#239 Stéphane Legrand)tyxml.syntax, tyxml.parser) and removes the ocamlfind library tyxml.ppx in favor of tyxml-ppx. (#197 by Drup, Rudi Grinberg and Anton Bachin)Html.of_seq and Svg.of_seq, which allow to easily import HTML parsed with markup in TyXML (#221 by Drup)pcdata (#222 by Drup)aria-* attributes (contribution by Armaël Guéneau) (see https://www.w3.org/TR/wai-aria-1.1/#states_and_properties)role attribute (contribution by Armaël Guéneau) (see https://www.w3.org/TR/role-attribute/)minlength form attribute (contribution by Armaël Guéneau) (See https://www.w3.org/TR/html5/forms.html#attr-input-minlength)<select> in the ppx.pp functions in the various implementations. Old printers are deprecated.tyxml library.str library has been replaced by re.`On|`Off arguments are now replaced by booleans.sandbox attributes are now more consistent (contributino by Anton 'aantron' Bachin).example/ directory. (basic_website contributed by Edgar 'fxfactorial' Aroutiounian).tyxml library are now packed in a Tyxml module. If you were using one of Html5, Svg and Xml module, simply open Tyxml.autoname, which applies the aftermentionned transformation for the given elements/attributes.datetime-local.text attributes.a_lang for HTML. Deprecate a_srclang in favor of a_xml_lang.Xml_print.Utf8.normalize_from. The function was not useful and not optimizable easily.url(...) form when inappropriate (contribution by Florent Becker).spellcheck attribute (contribution by Kevin Brubeck Unhammer).sizes attributes and add missing attributes for the sandbox tag (contributions by Eyyüb Sari).img tag in the syntax extension.font_ svg attributes.Xml_print.Utf8 to encode html elements to utf8 properly.string_of_number, the better stringifier introduced in 3.1.0.\True | `False`) by actual booleans. Breaking change.muted, crossorigin and mediagroup for <audio> and <video>.