"
 The __<link>__ element specifies relationships between the current document  
 and an external resource. Possible uses for this element include defining a relational 
 framework for navigation. This Element is most used to link to style sheets.
 
 Example:
 
 <table style='width:100%'>
     <tr style='vertical-align: top'>
         <td style='border-style:none'>
         
 <pre data-language='ceylon'>
 Head {
     Link { href=\"css/bootstrap.min.css\"; rel=\"stylesheet\"; }
 };
 </pre>
 
         </td>
         <td style='border-style:none'>
         
 <pre data-language='html'>
 &lt;head&gt;
     &lt;link href=\"css/bootstrap.min.css\" rel=\"stylesheet\"&gt;
 &lt;/head&gt;
 </pre>
 
         </td>         
     </tr>
 </table>
 
 Technical details about this element can be found on the
 [Official W3C reference](https://www.w3.org/TR/html5/document-metadata.html#the-link-element).
 "
tagged("metadata")
shared class Link(
    /* GLOBAL ATTRIBUTES - BEGIN */
    "Attribute defines a unique identifier (ID) which must be unique in the whole document. Its purpose is to identify the element when linking (using a fragment identifier), scripting, or styling (with CSS)."
    Attribute<String> id = null,
    "Attribute defines a space-separated list of the classes of the element. Classes allows CSS and JavaScript to select and access specific elements via the class selectors."
    Attribute<String> clazz = null,
    "Attribute provides a hint for generating a keyboard shortcut for the current element. This attribute consists of a space-separated list of characters. The browser should use the first one that exists on the computer keyboard layout."
    Attribute<String> accessKey = null,
    "Attribute indicates if the element should be editable by the user. If so, the browser modifies its widget to allow editing."
    Attribute<Boolean> contentEditable = null,
    "Attribute defines id of an menu element to use as the contextual menu for this element"
    Attribute<String> contextMenu = null,
    "Attribute indicates the directionality of the element's text."
    Attribute<Direction> dir = null,
    "Attribute indicates whether the element can be dragged."
    Attribute<Boolean> draggable = null,
    "Attribute indicates what types of content can be dropped on an element."
    Attribute<DropZone> dropZone = null,
    "Attribute indicates that the element is not yet, or is no longer, relevant. For example, it can be used to hide elements of the page that can't be used until the login process has been completed. The browser won't render such elements. This attribute must not be used to hide content that could legitimately be shown."
    Attribute<Boolean> hidden = null,
    "Attribute specifies the primary language for the element's contents and for any of the element's attributes that contain text. Its value must be a valid BCP 47 language tag, or the empty string. Setting the attribute to the empty string indicates that the primary language is unknown."
    Attribute<String> lang = null,
    "Attribute defines whether the element may be checked for spelling errors."
    Attribute<Boolean> spellcheck = null,
    "Attribute contains CSS styling declarations to be applied to the element. Note that it is recommended for styles to be defined in a separate file or files."
    Attribute<String> style = null,
    "Attribute indicates if the element can take input focus (is focusable), if it should participate to sequential keyboard navigation, and if so, at what position."
    Attribute<Integer> tabIndex = null,
    "Attribute contains a text representing advisory information related to the element it belongs to. Such information can typically, but not necessarily, be presented to the user as a tooltip."
    Attribute<String> title = null,
    "Attribute that is used to specify whether an element's attribute values and the values of its text node children are to be translated when the page is localized, or whether to leave them unchanged."
    Attribute<Boolean> translate = null,
    /* GLOBAL ATTRIBUTES - END */
    "Attribute indicates whether CORS must be used when fetching the related image."
    Attribute<Crossorigin> crossorigin = null,
    "Attribute specifies the URL of the linked resource. A URL might be absolute or relative."
    Attribute<String> href = null,
    "Attribute indicates the language of the linked resource. It is purely advisory. Allowed values are determined by BCP47. Use this attribute only if the href attribute is present."
    Attribute<String> hreflang = null,
    "Attribute specifies the media which the linked resource applies to. Its value must be a media query. This attribute is mainly useful when linking to external stylesheets by allowing the user agent to pick the best adapted one for the device it runs on."
    Attribute<String> media = null,
    "Attribute names a relationship of the linked document to the current document. The attribute must be a space-separated list of the link types values. The most common use of this attribute is to specify a link to an external style sheet: the rel attribute is set to stylesheet, and the href attribute is set to the URL of an external style sheet to format the page."
    Attribute<String> rel = null,
    "Attribute defines the sizes of the icons for visual media contained in the resource. It must be present only if the rel contains the icon value."
    Attribute<String> sizes = null,
    "Attribute is used to define the type of the content linked to. The value of the attribute should be a MIME type such as text/html, text/css, and so on."
    Attribute<String>|Attribute<MimeType> type = null,
    "The attributes associated with this element."
    Attributes attributes = [])
        extends Element("link", id, clazz, accessKey, contentEditable, contextMenu, dir, draggable, dropZone, hidden, lang, spellcheck, style, tabIndex, title, translate, 
                   [attributeEntry("crossorigin", crossorigin), 
                    attributeEntry("href", href), 
                    attributeEntry("hreflang", hreflang), 
                    attributeEntry("media", media), 
                    attributeEntry("rel", rel), 
                    attributeEntry("sizes", sizes), 
                    attributeEntry("type", type), 
                   *attributes], [])
        satisfies MetadataCategory {
    
    "This element has no children."
    shared actual [] children = [];
    
}