# Typical combinations of page model and page view

The sections below show how page model and page view are often combined.

## View only

Simple pages with no back-end code can be implemented with a single [XPL pipeline](http://wiki.orbeon.com/forms/doc/developer-guide/xml-pipeline-language-xpl), XSLT template or static page. A view XPL pipeline must have a `data` output. The XML generated by the view then goes to the epilogue. ![](/files/-LEkC3x7urYBdPtqwI9e)

## Model only

If a page is not sent back to the user agent, there is no need for a view. This is typically the case when a redirect needs to be issued, a binary file is produced, or when a page simply implements an XML service. ![](/files/-LEkC3xBv9vFSx2DAphf)

## View only with xml submission

This is a variant of the *view only* scenario, where an XML submission is used. In this case, the view receives the XML submission as the `instance` input. ![](/files/-LEkC3xF5Q0qdGTyz1Iv)

## Model only with xml submission

This is a variant of the *model only* scenario, where an XML submission is used. ![](/files/-LEkC3xJ_BtvmxBAgm8y)

## View and model

This is the classic case. An XPL pipeline implements the page model and an XSLT template implements the page view where data produced by the model is consumed by the view. ![](/files/-LEkC3xMmoPzQcwoJYEm)

## View and model with xml submission, case 1

This is the equivalent of the previous model where an XML submission is used. In this case an `instance` input is made available to the model and the view. ![](/files/-LEkC3xQxCfnxEy0Rqh4)

## View and model with xml submission, case 2

This is a variant of the previous case where the model declares an `instance` output. This allows the model to modify the submitted XML instance. This is typically useful when the view displays some values from the XML submission document but these values are not exactly the same as those entered by the user. For example, a page with a text field where the user types an airport code. If the user enters a known city such as San Francisco, the application may automatically add the corresponding airport code (SFO in this case). ![](/files/-LEkC3xUDyhzdsMTTV22)


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://doc.orbeon.com/xml-platform/controller/combinations.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
