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.