# Provide a page-selection mechanism

## Applicability

applicability

html

sufficient

Digital publications derived from a fixed layout source or that include static page break locations to enable common points of reference.

## User Agent and Assistive Technology Support Notes

User agents may provide a specialized interface to the page list rather than render it directly, especially in ebook formats. Users might be presented with an input box into which to enter the page number they wish to go to, for example.

## Description

The objective of this technique is to ensure that a page-selection mechanism is provided that makes available programmatically all set page locations in the digital publication.

The page-selection mechanism provides a way to locate static page break locations (i.e., where each new page begins) within a digital publication. These locations typically come from a print equivalent of the edition and allow synchronization in, for example, a mix of print and digital publications in environments such as schools and universities.

The source of pagination is not limited to print but could match up to any statically paginated alternative, such as a PDF or even a fixed-layout EPUB (i.e., where the content does not reflow to fit the available screen size).

The order of the page break locations in a digital publication is not sequential in all cases, and not all page breaks may be represented. Publishers often rearrange and remove content from the paginated source content when creating a digital version.

Page lists are a central feature of many digital publishing formats. EPUB 3 defines the page list in its navigation document while EPUB 2 and DAISY 3 use the pageList element in the NCX. The DPUB-ARIA module also includes a `doc-pagelist` role for identifying the navigation element containing the page list.

Other publications provide a means of page navigation through a 'go to' mechanism.

## Examples

### Page list in HTML publications

To add a page list to a web-based document, the role `"doc-pagelist"` is added to the element (typically a `nav` element) that encloses the list and its title.

    <nav role="doc-pagelist" aria-labelledby="pglist">
     <h2 id="pglist">Page List</h2>
     <ol>
       <li><a href="intro.xhtml#pg1">1</a></li>
       <li><a href="intro.xhtml#pg2">2</a></li>
       …
     </ol>
    </nav>

The destinations of the page list links are usually explicit page break markers like the following:

    <span id="pg1" role="doc-pagebreak" aria-label="page 1">

### Page list in EPUB 3 publications

EPUB 3 uses the `epub:type` attribute to identify the page list in the navigation document. The attribute is used on a nav element with the value "page-list" (note the different hyphenation). The ARIA `role` attribute has no effect unless the navigation document can be directly accessed by users (i.e., the document is in the EPUB spine). Like the previous HTML example, the contents of the `nav` element is a list of links to the page break locations.

    <nav epub:type="page-list" role="doc-pagelist" aria-labelledby="pglist">
      <h2 id="pglist">Page List</h2>
      <ol>
        <li><a href="chapter01.xhtml#page001">1</a></li>
        <li><a href="chapter01.xhtml#page002">2</a></li>
        <li><a href="chapter01.xhtml#page003">3</a></li>
        ...
      </ol>
    </nav>

### Page list in EPUB 2 and DAISY publications

The EPUB 2 and DAISY 3 formats both use an XML grammar called the NCX for expressing navigation aids. The page list is defined within the `ncx` element using the pageList tag. Each `pageTarget` within this element identifies a page break, providing both a label and a destination.

    <ncx xmlns="http://www.daisy.org/z3986/2005/ncx/"
         version="2005-1"
         xml:lang="en-US">
      ...
      <pageList>
        <pageTarget id="p1" type="normal" value="1">
          <navLabel><text>1</text></navLabel>
          <content src="content.html#p001"/>
        </pageTarget>
        <pageTarget id="p2" type="normal" value="2">
          <navLabel><text>2</text></navLabel>
          <content src="content.html#p002"/>
        </pageTarget>
      </pageList>
    </ncx>

### Go to page mechanism

A mechanism provides the ability to enter a page number as an input and reposition the user to the matching target page location.

### Resources

- EPUB `page-list` nav
- Daisy NCX Elements
- DPUB-ARIA 1.0 doc-pagelist role

## Tests

### Procedure

1. Check that a page-selection mechanism exists in the publication.
2. Check that all the static page break locations in the publication are represented in the selection mechanism.
3. Check that the entries in the page-selection mechanism link to the correct location in the publication.

### Expected Results

- #1, #2 and #3 are true.