The Add-on XSD

XSD for download (Download add-on.xsd).

<xs:schema xmlns="http://smartics.de/xsd/projectdoc/add-on/1" targetNamespace="http://smartics.de/xsd/projectdoc/add-on/1" elementFormDefault="qualified">
  <xs:element name="add-on">
    <xs:annotation>
      <xs:documentation>
        Information provided for all domain objects.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="resource-bundle" type="ResourceBundleAddon" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Localized resources for the add-on.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="categories" type="Categories">
          <xs:annotation>
            <xs:documentation>
              List of categories for document types.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="import-doctypes" type="ImportDoctypes" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              List of doctypes to import into the add-on.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
      </xs:sequence>
      <xs:attribute name="default-locale" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            Specifies the supported default locale.
            Usually this is left blank so that the default locale is
            English. Specify this only if English is not supported.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="ResourceBundleAddon">
    <xs:annotation>
      <xs:documentation>
        Defines the resource bundle for the add-on.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="l10n" maxOccurs="unbounded" type="L10nAddon">
        <xs:annotation>
          <xs:documentation>
            The resource for one locale.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="L10nAddon">
    <xs:annotation>
      <xs:documentation>
        Localized resources for the add-on.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The name of the add-on.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The description to the add-on.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="locale" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          The name of the locale this bundle provides text resources.

          If omitted the text resources are
          bound to the default.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="Categories">
    <xs:annotation>
      <xs:documentation>
        Information about a doctype category.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="category" maxOccurs="unbounded" type="Category">
        <xs:annotation>
          <xs:documentation>
            The information on one category.

            There must be at least one category that shows the supported
            locales.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Category">
    <xs:annotation>
      <xs:documentation>
        Information about a doctype category.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
        <xs:element name="resource-bundle" minOccurs="0" type="ResourceBundleCategory">
          <xs:annotation>
            <xs:documentation>
              Localized resources for the doctype.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
    </xs:sequence>
    <xs:attribute name="id" type="xs:ID">
      <xs:annotation>
        <xs:documentation>
          The name of the category.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="ResourceBundleCategory">
    <xs:annotation>
      <xs:documentation>
        Defines the resource bundle for a category.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="l10n" maxOccurs="unbounded" type="L10nCategory">
        <xs:annotation>
          <xs:documentation>
            The resource for one locale.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="L10nCategory">
    <xs:annotation>
      <xs:documentation>
        Localized resources for a category.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="L10nName">
        <xs:annotation>
          <xs:documentation>
            The name of the category.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            A description to the category.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="locale" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          The name of the locale this bundle provides text resources.

          If omitted the text resources are bound to the default.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="L10nName">
    <xs:annotation>
      <xs:documentation>
        Information on a resource name.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="plural" type="xs:string">
          <xs:annotation>
            <xs:documentation>
              The plural form of the name.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="ImportDoctypes">
    <xs:annotation>
      <xs:documentation>
        Information about a doctype category.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="set" maxOccurs="unbounded" type="ImportDoctypesSet">
        <xs:annotation>
          <xs:documentation>
            List of doctypes to import into the add-on.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ImportDoctypesSet">
    <xs:annotation>
      <xs:documentation>
        A set of doctypes from a remote doctype add-on to be imported into this
        add-on.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
        <xs:element name="doctype-ref" minOccurs="0" maxOccurs="unbounded" type="DoctypeRef">
          <xs:annotation>
            <xs:documentation>
              A reference to a doctype to be imported. Currently this only
              includes homepages.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
    </xs:sequence>
    <xs:attribute name="id" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
          The identifier is the prefix of the doctype blueprint ID. That is
          without the name of the doctype.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="short-id" use="required" type="xs:token">
      <xs:annotation>
        <xs:documentation>
          The short identifier used to locate resources within the remotely
          located artifact.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="DoctypeRef">
    <xs:annotation>
      <xs:documentation>
        A reference to a doctype.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="id" type="xs:token">
      <xs:annotation>
        <xs:documentation>
          The identifier of the doctype.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="homepage" type="xs:boolean" default="true">
      <xs:annotation>
        <xs:documentation>
          Marker to indicate whether ('true') or not ('false') to import a
          homepage. This allows to promote imported doctypes without adding a
          homepage to the space.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
</xs:schema>