# APLAWS-II: Application Schemas

Final 1 November 2003

1 | Introduction
2 | Navigation
3 | Directory
4 | Services
5 | Site Map
6 | Portals
7 | Forums
8 | Search
9 | A-Z

## 1 Introduction

This document provides the XML Schemas for the principle public facing applications in APLAWS. The schemas describe the XML that is generated by UI components prior to being fed into the XSLT transformer. Since the precise combination of components that can be present in a particular JSP page can vary from install to install, these schemas don't document an entire page, but rather, each individual component that can be plugged into a page.

The official specification for XML schemas can be found at the W3C site. For a gentler introduction, the O'Reilly XML Schema book is recommended reading.

## 2 Navigation

Category navigation components may be present on any page in the site, since they provide things such as the list of top level categories, breadcrumb trail, etc.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns="http://xmlns.redhat.com/atoz/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://xmlns.redhat.com/atoz/1.0">

      <xs:element name="categoryRoot">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs the root navigation category
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Root</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="category" minOccurs="1" maxOccurs="1"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categoryTopLevel">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs the first level navigation categories (ie immediate
            children of the root).
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.TopLevel</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="category" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categorySiblings">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs siblings of the category category (ie, those categories
            at the same level as the current category.
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Siblings</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="category" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categoryChildren">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs immediate children of the current category
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Children</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="category" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categoryPath">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs the categories on a path between the root navigation
            category (exclusive) and the current category (inclusive).
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Path</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="category" minOccurs="1" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categoryMenu">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs the immediate children of all categories between the
            root navigation category & the current category (both inclusive).
            This is intended for showing a contextually-expanded tree to
            the current category.
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Menu</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="nestedCategory" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:element name="categoryHierarchy">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Outputs all categories, starting from the root navigation category
            and recursing.
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.category.Hierarchy</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="category" type="nestedCategory" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:complexType name="category">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            Represents the information for a single category. When
            generating links to the category page, the url attribute
            is the preferred method. The id attribute is merely
            present for informational purposes.
          </xs:documentation>
        </xs:annotation>

        <xs:attribute name="id" type="xs:integer"/>
        <xs:attribute name="title" type="xs:string"/>
        <xs:attribute name="description" type="xs:string" use="optional"/>
        <xs:attribute name="url" type="xs:anyURI"/>
      </xs:complexType>

      <xs:complexType name="nestedCategory">
        <xs:extension base="category">
          <xs:sequence>
            <xs:element name="category" type="nestedCategory" minOccurs="0" maxOccurs="unbounded"/>
          </xs:sequence>
        </xs:extension>
      </xs:complexType
    </xs:schema>

## 3 Directory

The directory page in APLAWS, commonly found at /content/directory.jsp contains a summary of top two levels of navigation categories.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns="http://www.arsdigita.com/cms/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://www.arsdigita.com/cms/1.0">

      <xs:element name="directory">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            The directory component displays a summary of the first two
            levels of the navigation category heirarchy. The categoryID
            attribute can be used to link to
            $context-prefix/navigation/category.jsp?categoryID=XXX
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.navigation.ui.DirectoryComponent</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="directoryL1Category" minOccurs="0" maxOccurs="unbounded">
              <xs:complexType>
                <xs:sequence>
                  <xs:element name="directoryL2Category" minOccurs="0" maxOccurs="unbounded">
                    <xs:complexType>
                      <xs:attribute name="title" type="xs:string">
                      <xs:attribute name="description" type="xs:string" use="optional">
                      <xs:attribute name="categoryID" type="xs:integer">
                    </xs:complexType>
                  </xs:element>

                  <xs:element name="directoryItem" minOccurs="0" maxOccurs="3">
                    <xs:annotation>
                      <xs:documentation xml:lang="en">
                        The first two items are instances of the 'Fixed Promo'
                        content type in the current category. The third item
                        is a 'Fixed Promo' item from the subcategory.
                      </xs:documentation>
                    </xs:annotation>

                    <xs:complexType>
                      <xs:attribute name="title" type="xs:string">
                      <xs:attribute name="path" type="xs:anyURI">
                    </xs:complexType>
                  </xs:element>
                </xs:sequence>

                <xs:attribute name="title" type="xs:string">
                <xs:attribute name="description" type="xs:string" use="optional">
                <xs:attribute name="categoryID" type="xs:integer">
              </xs:complexType>
            </xs:element>
          </sequence>
        </xs:complexType>
      </xs:element>
    </xs:schema>

## 4 Services

The services page in APLAWS, commonly found at /content/services.jsp, is little more than a placeholder for designers to hook on to.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns="http://www.arsdigita.com/aplaws/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://www.arsdigita.com/aplaws/1.0">

      <xs:element name="services">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            The services component is just a place holder for hooking onto
            in XSLT. At this time it contains no content.
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.aplaws.ui.ServicesComponent</gen:class>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:schema>

## 5 Site Map

The sitemap page in APLAWS, commonly found at /content/sitemap.jsp is little more than a placeholder for designers to hook on to.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns="http://www.arsdigita.com/aplaws/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://www.arsdigita.com/aplaws/1.0">

      <xs:element name="sitemap">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            The sitemap component is just a place holder for hooking onto
            in XSLT. At this time it contains no content.
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.aplaws.ui.SitemapComponent</gen:class>
          </xs:appinfo>
        </xs:annotation>
      </xs:element>
    </xs:schema>

## 6 Portals

The portals schema describes the generic framework for browsing workspaces & portals. Each portlet type will have its own schema to describe what XML it generates.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns="http://www.uk.arsdigita.com/portal/1.0"
      xmlns:portlet="http://www.uk.arsdigita.com/portlet/1.0"
      xmlns:debug="http://xmlns.redhat.com/waf/bebop/debug/1.0"
      xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://www.uk.arsdigita.com/portal/1.0">

      <xs:element name="workspace">
        <xs:sequence>
          <xs:element name="workspaceDetails" type="workspaceDetails">
          <xs:element name="portalList" type="portalList">
          <xs:element name="bebop:portal" type="portalDisplay">
        </xs:sequence>
      </xs:element>

      <xs:complexType name="workspaceDetails">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            This outputs metadata about the workspace along with a
            summary of permissions.
          </xs:documentation>

          <xs:appinfo>
            <debug:class>com.arsdigita.london.portal.ui.WorkspaceDetails</debug:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="objectType" minOccurs="1" maxOccurs="1"/>
          <xs:element name="title" minOccurs="1" maxOccurs="1"/>
          <xs:element name="description" minOccurs="0" maxOccurs="1"/>
          <xs:element name="primaryURL" minOccurs="1" maxOccurs="1"/>
        </xs:sequence>

        <xs:attribute name="oid" type="xs:string"/>
        <xs:attribute name="canEdit" type="xs:boolean"/>
        <xs:attribute name="canAdmin" type="xs:boolean"/>
      </xs:complexType>

      <xs:complexType name="portalList">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            This component generates a summary list of all portals
            in a workspace. One use of this is to generate a set
            of tabbed panes for switching between portals.
          </xs:documentation>

          <xs:appinfo>
            <debug:class>com.arsdigita.london.portal.ui.PortalList</debug:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="portalDetails" minOccurs="0" maxOccurs="unbounded">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="objectType" minOccurs="1" maxOccurs="1"/>
                <xs:element name="title" minOccurs="1" maxOccurs="1"/>
                <xs:element name="description" minOccurs="0" maxOccurs="1"/>
              </xs:sequence>

              <xs:attribute name="oid" type="xs:string"/>
              <xs:attribute name="isSelected" type="xs:boolean"/>

              <xs:attribute name="selectAction" type="xs:url"/>
              <xs:attribute name="deleteAction" type="xs:url" use="optional"/>
              <xs:attribute name="moveLeftAction" type="xs:url" use="optional"/>
              <xs:attribute name="moveRightAction" type="xs:url" use="optional"/>
            </xs:complexType>
          </xs:element>
          <xs:element name="bebop:form"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="portalDisplay">
        <xs:annotation>
          <xs:appinfo>
            <debug:class>com.arsdigita.london.portal.ui.PersistentPortal</debug:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="" minOccurs="" maxOccurs="">
        </xs:sequence>
      </xs:complexType>

    </xs:schema>

## 7 Forums

The schema for forums only describes the components that are used to present information about messages. It does not cover the Bebop forms and administrative UI components.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
      xmlns="http://xmlns.redhat.com/forums/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://xmlns.redhat.com/forums/1.0">

      <xs:element name="forum" type="forumComponent">

      <xs:complexType name="forumComponent">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.ForumComponent</gen:class>
          </xs:appinfo>
        </xs:annotation>
        <xs:sequence>
          <xs:element name="forumMode" minOccurs="0" maxOccurs="unbounded" type="forumMode"/>

          <xs:choice>
            <xs:choice>
              <xs:annotation>
                <xs:appinfo>
                  <gen:class>com.arsdigita.forum.ui.ForumUserView</gen:class>
                </xs:appinfo>
              </xs:annotation>

              <xs:sequence>
                <xs:element name="forumOptions" type="forumOptions"/>
                <xs:element name="topicSelector" type="topicSelector"/>
                <xs:element name="threadList" type="threadList"/>
              </xs:sequence>

              <xs:element name="bebop:form" type="bebopForm">
                <xs:annotation>
                  <xs:appinfo>
                    <gen:class>com.arsdigita.forum.ui.NewPostForm</gen:class>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
            </xs:choice>

            <xs:choice>
              <xs:annotation>
                <xs:appinfo>
                  <gen:class>com.arsdigita.forum.ui.CategoryView</gen:class>
                </xs:appinfo>
              </xs:annotation>

              <xs:sequence>
                <xs:element name="topicOptions" type="topicOptions"/>
                <xs:element name="topicList" type="topicList"/>
              </xs:sequence>

              <xs:element name="bebop:form" type="bebopForm">
                <xs:annotation>
                  <xs:appinfo>
                    <gen:class>com.arsdigita.forum.ui.CategoryAddForm</gen:class>
                  </xs:appinfo>
                </xs:annotation>
              </xs:element>
            </xs:choice>

            <xs:sequence>
              <xs:annotation>
                <xs:appinfo>
                  <gen:class>com.arsdigita.forum.ui.ForumAlertsView</gen:class>
                </xs:appinfo>
              </xs:annotation>

              <xs:element name="forumAlerts" type="forumAlerts"/>
              <xs:element name="threadAlerts" type="threadAlerts"/>
            </xs:sequence>

            <xs:sequence>
              <xs:annotation>
                <xs:appinfo>
                  <gen:class>com.arsdigita.forum.ui.admin.ModerationView</gen:class>
                </xs:appinfo>
              </xs:annotation>

              <xs:element name="bebop:form" type="bebopForm"/>
            </xs:sequence>
          </xs:choice>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="threadComponent">
        <xs:choice>
          <xs:element name="bebop:form" type="bebopForm">
            <xs:annotation>
              <xs:appinfo>
                <gen:class>com.arsdigita.forum.ui.EditPostForm</gen:class>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="bebop:form" type="bebopForm">
            <xs:annotation>
              <xs:appinfo>
                <gen:class>com.arsdigita.forum.ui.ReplyToPostForm</gen:class>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:element name="bebop:form" type="bebopForm">
            <xs:annotation>
              <xs:appinfo>
                <gen:class>com.arsdigita.forum.ui.RejectionForm</gen:class>
              </xs:appinfo>
            </xs:annotation>
          </xs:element>
          <xs:sequence>
            <xs:element name="threadOptions" type="threadOptions"/>
            <xs:element name="threadDisplay" type="threadDisplay"/>
          </xs:element>
        </xs:choice>
      </xs:complexType>

      <xs:complexType name="forumMode">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A forum mode refers to one of the alternate
            views onto the forum application. The url
            attributes provides the link for switching
            into the mode.
          </xs:documentation>
        </xs:annotation>

        <xs:attribute name="mode" type="xs:string"/>
        <xs:attribute name="url" type="xs:anyURI"/>
        <xs:attribute name="selected" type="xs:boolean"/>
      </xs:complexType>

      <xs:complexType name="forumOptions">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A set of links relating to operations
            in the thread list, such as posting
            a new message.
          </xs:documentation>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="bebop:link" type="bebopLink"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="topicSelector">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.TopicSelector</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="topic">
            <xs:sequence>
               XXX DOR
            </xs:sequence>
          </xs:element>
        <xs:sequence>

        <xs:attribute name="baseURL" type="xs:anyURI"/>
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="anyTopicID" type="xs:integer"/>
        <xs:attribute name="noTopicID" type="xs:integer"/>
      </xs:complexType>

      <xs:complexType name="threadList">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.ThreadList</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="paginator" type="paginator"/>
          <xs:element name="thread" minOccurs="0" maxOccurs="unbounded">
            <xs:sequence>
               XXX DOR
            </xs:sequence>
            <xs:attribute name="url" type="xs:anyURI"/>
          </xs:element>
        <xs:sequence>
      </xs:complexType>

      <xs:complexType name="topicOptions">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A set of links relating to operations
            in the topic list, such as creating
            a new topic.
          </xs:documentation>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="bebop:link" type="bebopLink"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="topicList">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.TopicList</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="topicSummary" minOccurs="0" maxOccurs="unbounded">
            <xs:sequence>
              <xs:element name="id"/>
              <xs:element name="name"/>
              <xs:element name="latestPost"/>
              <xs:element name="numThreads"/>
            </xs:sequence>
          </xs:element>
          <xs:element name="noTopicSummary">
            <xs:sequence>
              <xs:element name="latestPost"/>
              <xs:element name="numThreads"/>
            </xs:sequence>
            <xs:attribute name="url" type="xs:anyURI"/>
          </xs:element>
        <xs:sequence>

        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="baseURL" type="xs:anyURI"/>
      </xs:complexType>

      <xs:complexType name="threadAlertList">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.ThreadAlertList</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="threadAlert" minOccurs="0" maxOccurs="unbounded">
            <xs:sequence>
               XXX DOR
            </xs:sequence>
            <xs:attribute name="url" type="xs:anyURI"/>
          </xs:element>
        <xs:sequence>
      </xs:complexType>

      <xs:complexType name="forumAlerts">
        <xs:element name="bebop:form" type="bebopForm"/>
      </xs:complexType>

      <xs:complexType name="threadAlerts">
        <xs:element name="bebop:form" type="bebopForm"/>
      </xs:complexType>

      <xs:complexType name="threadOptions">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A set of links relating to operations
            in the thread list, such as alert
            subscribe
          </xs:documentation>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="bebop:link" type="bebopLink"/>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="threadDisplay">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.forum.ui.ThreadList</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="paginator" type="paginator"/>
          <xs:element name="message" minOccurs="0" maxOccurs="unbounded">
            <xs:sequence>
               XXX DOR
            </xs:sequence>
            <xs:attribute name="approveURL" type="xs:anyURI" use="optional"/>
            <xs:attribute name="rejectURL" type="xs:anyURI" use="optional"/>
            <xs:attribute name="deleteURL" type="xs:anyURI" use="optional"/>
            <xs:attribute name="editURL" type="xs:anyURI" use="optional"/>
            <xs:attribute name="replyURL" type="xs:anyURI"/>
          </xs:element>
        <xs:sequence>
      </xs:complexType>

      <xs:complexType name="paginator">
        <xs:attribute name="param" type="xs:string"/>
        <xs:attribute name="baseURL" type="xs:anyURI"/>
        <xs:attribute name="pageNumber" type="xs:integer"/>
        <xs:attribute name="pageCount" type="xs:integer"/>
        <xs:attribute name="pageSize" type="xs:integer"/>
        <xs:attribute name="objectBegin" type="xs:long"/>
        <xs:attribute name="objectEnd" type="xs:long"/>
        <xs:attribute name="objectCount" type="xs:long"/>
      </xs:complexType>

      <xs:complexType name="bebopForm">
      </xs:complexType>

      <xs:complexType name="bebopLink">
      </xs:complexType>

    </xs:schema>

## 8 Search

The schema for search describes the XML document used to represent the result list and the filter metadata which can be used to build a query form in HTML.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns:bebop="http://www.arsdigita.com/bebop/1.0"
      xmlns="http://xmlns.redhat.com/core/search/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://xmlns.redhat.com/core/search/1.0">

      <xs:element name="query" type="query"/>
      <xs:element name="results" type="results"/>

      <xs:complexType name="results">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.search.ui.ResultsPane</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="paginator">
            <xs:attribute name="param" type="xs:string"/>
            <xs:attribute name="baseURL" type="xs:anyURI"/>
            <xs:attribute name="pageNumber" type="xs:integer"/>
            <xs:attribute name="pageCount" type="xs:integer"/>
            <xs:attribute name="pageSize" type="xs:integer"/>
            <xs:attribute name="objectBegin" type="xs:long"/>
            <xs:attribute name="objectEnd" type="xs:long"/>
            <xs:attribute name="objectCount" type="xs:long"/>
          </xs:element>

          <xs:element name="documents">
            <xs:sequence>
              <xs:element name="object" minOccurs="0" maxOccurs="unbounded">
                <xs:attribute name="oid" type="xs:string"/>
                <xs:attribute name="url" type="xs:string"/>
                <xs:attribute name="score" type="xs:string"/>
                <xs:attribute name="title" type="xs:string"/>
                <xs:attribute name="summary" type="xs:string" use="optional"/>
                <xs:attribute name="locale" type="xs:string"/>
                <xs:attribute name="creationDate" type="xs:string" use="optional"/>
                <xs:attribute name="creationParty" type="xs:string" use="optional"/>
                <xs:attribute name="lastModifiedDate" type="xs:string" use="optional"/>
                <xs:attribute name="lastModifiedParty" type="xs:string" use="optional"/>
              </xs:element>
            </xs:sequence>
          </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="query">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.search.ui.BaseQueryComponent</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:sequence>
          <xs:element name="terms">
            <xs:sequence>
              <xs:element name="error" minOccurs="0" maxOccurs="unbounded">
            </xs:sequence>

            <xs:attribute name="param" type="xs:string"/>
            <xs:attribute name="value" type="xs:string"/>
          </xs:element>
          <xs:element name="filter" minOccurs="0" maxOccurs="unbounded">
            <xs:sequence>
              <xs:element name="error" minOccurs="0" maxOccurs="unbounded">

              <xs:choice>
                <xs:element name="category" type="category" minOccurs="0" maxOccurs="unbounded"/>
                <xs:element name="objectType" type="objectType" minOccurs="0" maxOccurs="unbounded"/>
              </xs:choice>
            </xs:sequence>
          </xs:element>
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="category">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.search.ui.filters.CategoryFilterWidget</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:attribute name="oid" type="xs:string"/>
        <xs:attribute name="title" type="xs:string"/>
        <xs:attribute name="description" type="xs:string"/>
        <xs:attribute name="isSelected" type="xs:string" use="optional"/>
      </xs:complexType>

      <xs:complexType name="objectType">
        <xs:annotation>
          <xs:appinfo>
            <gen:class>com.arsdigita.search.ui.filters.ObjectTypeFilterWidget</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:attribute name="name" type="xs:string"/>
        <xs:attribute name="isSelected" type="xs:string" use="optional"/>
      </xs:complexType>

    </xs:schema>

## 9 A-Z

The A-Z application is a framework for providing a list of topics and items paginated by letter.

    <xs:schema
      xmlns:xs="http://www.w3.org/2001/XMLSchema"
      xmlns:gen="http://xmlns.redhat.com/core/bebop/generator/1.0"
      xmlns="http://xmlns.redhat.com/atoz/1.0"
      elementFormDefault="qualified"
      targetNamespace="http://xmlns.redhat.com/atoz/1.0">

      <xs:element name="atoz">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            The AtoZ provides a pluggable letter paginated
            listing of topics and optionally items with a
            topic
          </xs:documentation>

          <xs:appinfo>
            <gen:class>com.arsdigita.london.atoz.ui.AtoZPane</gen:class>
          </xs:appinfo>
        </xs:annotation>

        <xs:complexType>
          <xs:sequence>
            <xs:element name="letter" minOccurs="26" maxOccurs="26">
              <xs:complexType>
                <xs:attribute name="isSelected" type="xs:boolean"/>
              </xs:complexType>
            </xs:element>
            <xs:element name="provider" type="provider" minOccurs="0" maxOccurs="unbounded"/>
          </sequence>
        </xs:complexType>
      </xs:element>

      <xs:complexType name="entryList">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            This type is a base for an element containing
            child entries, either topics or items.
          </xs:documentation>
        </xs:annotation>
        <xs:sequence>
          <xs:choice>
            <xs:element name="atomicEntry" type="atomicEntry"/>
            <xs:element name="compoundEntry" type="compoundEntry"/>
          </xs:choice>.
        </xs:sequence>
      </xs:complexType>

      <xs:complexType name="provider">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A provider is a module which generates A-Z entries.
            A category provider may generate a list of items
            corresponding to navigation categories.
          </xs:documentation>
        </xs:annotation>
        <xs:extension base="entryList">
          <xs:attribute name="title" type="xs:string"/>
          <xs:attribute name="description" type="xs:string" use="optional"/>
        </xs:extension>
      </xs:complexType>

      <xs:complexType name="atomicEntry">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            An atomic entry is a leaf-node in the A-Z, representing
            a single item (or page of content) in the A-Z. As such
            it has a URL pointing to the location of the item.
          </xs:documentation>
        </xs:annotation>
        <xs:attribute name="title" type="xs:string"/>
        <xs:attribute name="description" type="xs:string" use="optional"/>
        <xs:attribute name="url" type="xs:anyURI"/>
      </xs:complexType>

      <xs:complexType name="compoundEntry">
        <xs:annotation>
          <xs:documentation xml:lang="en">
            A compound entry can be thought of as a topic,
            with a title and description. It will contain
            a number of child entries, representing either
            sub-topics or items.
          </xs:documentation>
        </xs:annotation>
        <xs:extension base="entryList">
          <xs:attribute name="title" type="xs:string"/>
          <xs:attribute name="description" type="xs:string" use="optional"/>
        </xs:extension>
      </xs:complexType>

    </xs:schema>

Written by Daniel Berrange (berrange@redhat.com) Generated by htmltoc.pl.