## Extension

Utility type that represents either an available "Optional Package" (formerly known as "Standard Extension") as described in the manifest of a JAR file, or the requirement for such an optional package.

Note that this type works with extensions as defined by the "Optional Package" specification. For more information about optional packages, see the document Optional Package Versioning in the documentation bundle for your Java Standard Edition package, in file `guide/extensions/versioning.html` or the online Package Versioning documentation.

### Attributes

The extension type supports the following attributes:

Attribute | Description | Required
--- | --- | ---
extensionName | The name of extension | yes
specificationVersion | The version of extension specification (must be in dewey decimal aka dotted decimal notation, eg 3.2.4) | no
specificationVendor | The specification vendor | no
implementationVersion | The version of extension implementation (must be in dewey decimal aka dotted decimal notation, eg 3.2.4) | no
implementationVendor | The implementation vendor | no
implementationVendorId | The implementation vendor ID | no
implementationURL | The url from which to retrieve extension. | no
refid | Makes this `extension` a reference to an `extension` defined elsewhere. If specified no other attributes or nested elements are allowed. | No

#### Examples

    <extension id="e1"
        extensionName="MyExtensions"
        specificationVersion="1.0"
        specificationVendor="Peter Donald"
        implementationVendorID="vv"
        implementationVendor="Apache"
        implementationVersion="2.0"
        implementationURL="https://somewhere.com/myExt.jar"/>

Fully specified extension object.

    <extension id="e1"
        extensionName="MyExtensions"
        specificationVersion="1.0"
        specificationVendor="Peter Donald"/>

Extension object that just specifies the specification details.