The Space XSD

XSD for download (Download space.xsd).

<xs:schema xmlns="http://smartics.de/xsd/projectdoc/space/1" targetNamespace="http://smartics.de/xsd/projectdoc/space/1" elementFormDefault="qualified">
  <xs:element name="space">
    <xs:annotation>
      <xs:documentation>
        The container for information on one space. This information is used
        to create a space blueprint.
      </xs:documentation>
    </xs:annotation>
    <xs:complexType>
      <xs:sequence>
        <xs:element name="resource-bundle" type="ResourceBundleSpace">
          <xs:annotation>
            <xs:documentation>
              Localized resources for the space.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="properties" type="Properties" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              List of space properties in addition to those provided in the
              homepage template.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="doctype-bundle" type="DoctypeBundleSpace" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Defined set of doctypes used in this space.
            </xs:documentation>
          </xs:annotation>
        </xs:element>
        <xs:element name="tools" type="Tools" minOccurs="0">
          <xs:annotation>
            <xs:documentation>
              Defined set of tools used in this space.
            </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="id" type="xs:ID" use="required">
        <xs:annotation>
          <xs:documentation>
            The unique identifier of the doctype.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
      <xs:attribute name="category" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The category for the space.
          </xs:documentation>
        </xs:annotation>
      </xs:attribute>
    </xs:complexType>
  </xs:element>

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

  <xs:complexType name="L10nSpace">
    <xs:annotation>
      <xs:documentation>
        Localized resources for a space.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The name of the space.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The description to the space.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="about" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            A description about the space for the wizard. More detailed than
            the description.
          </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="Properties">
    <xs:annotation>
      <xs:documentation>
        The container for property information of a doctype.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="property" type="Property" maxOccurs="unbounded">
        <xs:annotation>
          <xs:documentation>
            Information on one property of a doctype.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Property">
    <xs:annotation>
      <xs:documentation>
        Information on one property of a doctype.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="value" minOccurs="0" type="PropertyValueElement">
        <xs:annotation>
          <xs:documentation>
            The value of the property.

            If not specified a placeholder element is
            implied.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="controls" type="xs:string" minOccurs="0">
        <xs:annotation>
          <xs:documentation>
            The controls of the property.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="resource-bundle" minOccurs="0" type="ResourceBundleProperty">
        <xs:annotation>
          <xs:documentation>
            Localized resources for the property.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="key" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          The key to identify the property.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

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

  <xs:complexType name="L10nProperty">
    <xs:annotation>
      <xs:documentation>
        Localized resources for a property.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="name" minOccurs="0" type="L10nName">
        <xs:annotation>
          <xs:documentation>
            The localized name of the property.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
      <xs:element name="description" minOccurs="0" type="xs:string">
        <xs:annotation>
          <xs:documentation>
            The description to the property. Used as the hint text in the
            template.
          </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" mixed="true">
    <xs:annotation>
      <xs:documentation>
        The name resource.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0">
      <xs:any namespace="##any" processContents="lax"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PropertyValueElement">
    <xs:annotation>
      <xs:documentation>
        A container of information for a property value.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0">
      <xs:choice minOccurs="0" maxOccurs="1">
        <xs:element name="xml" type="XML">
        </xs:element>
        <xs:element name="macro" type="Macro">
        </xs:element>
        <xs:element name="placeholder" type="Placeholder">
        </xs:element>
      </xs:choice>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Placeholder">
    <xs:annotation>
      <xs:documentation>
        A placeholder with support text.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="key" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          The key for localized information that is rendered within the
          placeholder.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="XML" mixed="true">
    <xs:annotation>
      <xs:documentation>
        Any elements within an XML element.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0">
      <xs:any namespace="##any" processContents="lax"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="Macro">
    <xs:annotation>
      <xs:documentation>
        Information to construct a Confluence macro.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence minOccurs="0" maxOccurs="unbounded">
      <xs:element name="param" type="MacroParameter">
        <xs:annotation>
          <xs:documentation>
            The parameter for a macro.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="name" type="xs:string" use="required">
      <xs:annotation>
        <xs:documentation>
          The name of the macro.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>
  <xs:complexType name="MacroParameter">
    <xs:annotation>
      <xs:documentation>
        Information to construct a Confluence macro parameter.
      </xs:documentation>
    </xs:annotation>
    <xs:simpleContent>
      <xs:extension base="xs:string">
        <xs:attribute name="name" type="xs:string" use="required">
          <xs:annotation>
            <xs:documentation>
              The name of the macro parameter.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
        <xs:attribute name="key" type="xs:string">
          <xs:annotation>
            <xs:documentation>
              The key to access localized information to put as the parameter value.

              The key is only
              evaluated, if the content of the parameter element is
              empty.
            </xs:documentation>
          </xs:annotation>
        </xs:attribute>
      </xs:extension>
    </xs:simpleContent>
  </xs:complexType>

  <xs:complexType name="DoctypeBundleSpace">
    <xs:annotation>
      <xs:documentation>
        Defines the doctype bundle for a space.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="doctype-ref" maxOccurs="unbounded" type="DoctypeRefPattern">
        <xs:annotation>
          <xs:documentation>
            List of doctypes, identified by ID or RegExp Pattern.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
    <xs:attribute name="directive" type="DirectiveType" default="exclude">
      <xs:annotation>
        <xs:documentation>
          A regular expression to match doctype IDs.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="DirectiveType" final="restriction">
    <xs:restriction base="xs:string">
      <xs:enumeration value="include">
        <xs:annotation>
          <xs:documentation>
            Includes the listed and matching doctypes.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="exclude">
        <xs:annotation>
          <xs:documentation>
            Excludes the listed and matching doctypes.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>

  <xs:complexType name="DoctypeRefPattern">
    <xs:annotation>
      <xs:documentation>
        A doctypes, identified by ID or RegExp Pattern.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="id" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          The identifier of a doctype.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
    <xs:attribute name="pattern" type="xs:string">
      <xs:annotation>
        <xs:documentation>
          A regular expression to match doctype IDs.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:complexType name="Tools">
    <xs:annotation>
      <xs:documentation>
        The container for tool information.
      </xs:documentation>
    </xs:annotation>
    <xs:sequence>
      <xs:element name="tool" minOccurs="0" maxOccurs="unbounded" type="ToolRef">
        <xs:annotation>
          <xs:documentation>
            The identifier of a tool to be included in the space.
          </xs:documentation>
        </xs:annotation>
      </xs:element>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="ToolRef">
    <xs:annotation>
      <xs:documentation>
        Reference to a tool bundle.
      </xs:documentation>
    </xs:annotation>
    <xs:attribute name="id" type="xs:ID">
      <xs:annotation>
        <xs:documentation>
          The identifier of the tool.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </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" 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: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="location" type="LocationType" default="default">
      <xs:annotation>
        <xs:documentation>
          The location to place the homepage for this 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:attribute name="promote" type="xs:boolean" default="true">
      <xs:annotation>
        <xs:documentation>
          Marker to indicate whether ('true') or not ('false') the doctype's
          blueprint should be promoted with this space. This allows to demote
          imported doctypes.
        </xs:documentation>
      </xs:annotation>
    </xs:attribute>
  </xs:complexType>

  <xs:simpleType name="LocationType" final="restriction">
    <xs:restriction base="xs:token">
      <xs:enumeration value="default">
        <xs:annotation>
          <xs:documentation>
            The default location is derived from the name of the doctype.
            If it ends with "-type" it is
            considered a type. Otherwise it is
            'home'.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="home">
        <xs:annotation>
          <xs:documentation>
            Store the homepage on space home.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
      <xs:enumeration value="type">
        <xs:annotation>
          <xs:documentation>
            Store the homepage on types home.
          </xs:documentation>
        </xs:annotation>
      </xs:enumeration>
    </xs:restriction>
  </xs:simpleType>
</xs:schema>