Render Results

The Watson™ Explorer Engine rendering process takes XML that specifies (among other things) the query, the result documents for that query and the clusters produced from those documents and produces an HTML page containing this information and including an HTML form that allows the end user to specify another query. Put another way, the XSL in a display specification transforms the XML representing the state of the Introduction to Watson Explorer XML into the HTML result page that is returned to the user.

This rendering process is driven by a display specification (or just Customizing the User Interface in Watson Explorer Engine terminology) identified by a project option (render.function). The default display, velocity-display is a complex set of XSL templates that performs the transformation from XML into a Watson Explorer HTML results page. Basic aspects of the rendering, like color, text strings, and logos can be changed very simply without substantial knowledge of XSL. With more extensive knowledge and use of XSL, the display can be customized to an arbitrary degree. Different projects can have different default displays. For example, the default query-meta project uses a default display called render-custom.

Although it is not shown in the functional overview diagram, the rendering process uses the same input form previously employed to normalize query input to generate an HTML form in the rendering to permit the user to enter another query (see Normalize Query Input). This explains why the input form has to define not only the HTML form fields through which the user enters the query, but also the HTML form fields used to carry state information from query to query, including most importantly a field called v:project from which Watson Explorer Engine identifies most of the rest of the information it uses. These state parameters are typically represented as hidden fields in the HTML form.

The most relevant parts of the XML structure accepted as input by the rendering typically follow the outline below: (... indicates possible repetition - there will generally be a great deal of substructure below the level of this outline - you can look up what attributes and sub-elements are allowed in the schema section of the online documentation; there will also be other XML elements intermixed in this structure that are not particularly relevant to the rendering):

<vce>
  <stateparam/>...    parameters from the URL
  <param/>...           parameters from the URL
  <option/>...           options from the project
  <query></query>
  <submit>
  <form>
  <input/>...     fields from the input form
  </form>
  </submit>
  <added-source>
  <added-source/>...      one for each source queried
  </added-source>
  <declare/>...         global project variables
  <tree>
  <node/>...     one for each top level cluster
  </tree>
  <boost>
  <document/>...  documents that need special treatment - may or may not be in the list
  </boost>...
  <list>
  <document/>...  one for each document in the result list
  </list>
  </vce>

Keeping this structure in mind will aid in understanding what the XSL is doing if you want to modify it in more complex ways.