Le wiki utilise un concept de spécification de page « PageSpec » afin de choisir un ensemble de pages. Par exemple il est possible de choisir les pages verrouillées, les pages dont vous recevez par courriel les modifications ou des pages à regrouper pour faire blog. Une spécification correspond à un ensemble de pages.

La spécification la plus simple est la liste de pages. Par exemple, l'expression suivante correspond à l'une ou l'autre des trois pages listées :

foo or bar or baz

La plupart du temps, vous voulez trouver les pages qui contiennent une expression particulière dans leur nom. Cela s'obtient en utilisant un motif (« glob pattern »). Le métacaractère « * » correspond à n'importe quelle partie du nom de la page et le métacaractère « ? » à n'importe quelle lettre. Ainsi, l'expression suivante correspond à toutes les pages traitant de musique et à n'importe quelle sous-page SubPage de la SandBox, mais pas à la SandBox elle-même :

*musique* or SandBox/*

Vous pouvez également préfixer un élément avec « ! » pour ignorer les pages correspondantes. Ainsi pour trouver toutes les pages sauf les pages Discussion et la page SandBox :

* and !SandBox and !*/Discussion

Des contraintes plus élaborées peuvent être ajoutées avec les fonctions suivantes :

  • "glob(someglob)" - matches pages and other files that match the given glob. Just writing the glob by itself is actually a shorthand for this function.
  • "page(glob)" - like glob(), but only matches pages, not other files
  • "link(page)" - matches only pages that link to a given page (or glob)
  • "tagged(tag)" - matches pages that are tagged or link to the given tag (or tags matched by a glob)
  • "backlink(page)" - matches only pages that a given page links to
  • "creation_month(month)" - matches only files created on the given month number
  • "creation_day(mday)" - or day of the month
  • "creation_year(year)" - or year
  • "created_after(page)" - matches only files created after the given page was created
  • "created_before(page)" - matches only files created before the given page was created
  • "internal(glob)" - like glob(), but matches even internal-use pages that globs do not usually match.
  • "title(glob)", "author(glob)", "authorurl(glob)", "license(glob)", "copyright(glob)", "guid(glob)"
    • match pages that have the given metadata, matching the specified glob.
  • "user(username)" - tests whether a modification is being made by a user with the specified username. If openid is enabled, an openid can also be put here. Glob patterns can be used in the username. For example, to match all openid users, use user(*://*)
  • "admin()" - tests whether a modification is being made by one of the wiki admins.
  • "ip(address)" - tests whether a modification is being made from the specified IP address.
  • "comment(glob)" - matches comments to a page matching the glob.
  • "comment_pending(glob)" - matches unmoderated, pending comments.
  • "postcomment(glob)" - matches only when comments are being posted to a page matching the specified glob

Par exemple, pour trouver toutes les pages d'un blog qui ont un lien vers la page traitant de musique et qui ont été créées en 2005 :

blog/* and link(musique) and creation_year(2005)

Veuillez noter l'utilisation du « and » dans l'exemple ci-dessus. Seules les pages dont les trois conditions sont vraies seront trouvées. Utilisez « and » pour ce genre d'expression combinée. « or » est utilisé quand une seule des trois conditions est suffisante. Veuillez noter que « index and SandBox » n'a pas de sens puisqu'aucune page ne peut correspondre aux deux expressions.

On peut créer des expressions plus complexes à l'aide de parenthèses. Par exemple, pour trouver les pages d'un blog possédantl'une ou l'autre étiquette, on utiliserait :

blog/* and (tagged(foo) or tagged(bar))

Veuillez noter que le nom d'une page dans une spécification de page correspond au nom absolu du fichier dans le wiki. Ainsi une expression « foo » utilisée sur une page « a/b » ne correspondra pas à une page nommée « a/foo » ni à une page « a/b/foo ». Pour une correspondance relative au répertoire de la page contenant la spécification, vous pouvez utiliser « ./ ». Par exemple, « ./foo » sur la page « a/b » correspondra à la page « a/foo ».

To indicate the name of the page the PageSpec is used in, you can use a single dot. For example, link(.) matches all the pages linking to the page containing the PageSpec.