Pagequery#
There are two versions of this page: english and german. PageQuery is part of the OWiki Plugins.
Relevanz#
PageQuery gathers informations from pages having the same prefix. This is interesting if you generate Pages via a form and you want to collect data from all pages that where generated by the form.
To work properly PageQuery needs the data to be conform with a "key=value" schema. This is most likely to happen in a table like in the following example.
| booktitle | Understanding the Linux Kernel |
|---|---|
| author | Daniel P. Bovet |
| category | available |
"booktitle" is the key, "Understanding the Linux Kernel" the value. We will continue this Libraryexample so try to keep this in mind.
PageQuery works perfectly with FormHandlers like GenericNamePageHandler.
Example#
Inventory for a library
Installation#
- Copy OWiki.jar to your WEB-INF\lib
- Restart Tomcat
Applying in Wiki#
complete Syntax of the statement
[{PageQuery pattern='^\\|*([^|]*)\\|*([^|]*)$' link='booktitle' select='booktitle,author'
from='Library_' where='category=available'}]
gets you
| booktitle | author | |
|---|---|---|
| Understanding the Linux Kernel | Daniel P. Bovet | |
| Head First Java (Head First) | Bert Bates, Kathy Sierra, und Mike Loukides | |
| Spain (Lonely Planet Spain) | Damien Simonis |
Every entry of this table stands for a wikipage.
elements#
select#
Similiar to SQLdetermines which keys should be selected - in our case booktitle and author
select='booktitle,author'
from-Klausel#
Similar to SQLPrefix from the wikipages the should be queried. Library_ will query pages called Library_Spain, Library_LinuxCoreCompiler but not LibCappuccinoFromItaly
from='Library_'
where-Klausel (optional)#
Similar to SQLAs you see the values for category are not displayed. But they are considered. Thats way pages that don't contain the key=value:
| category | available |
|---|
where='category=available'
link (optional)#
Determines of one of the rows should be made a link that leeds to the page.link='Titel'
pattern (optional)#
(this is for advanced users)Regular expression that termines in which form the key=value pairs should be parsed
In other words it describes the pattern of the tables
Example: |key|value means: pattern='^\\|([^|]*)\\|([^|]*)$' and a totally flexible pattern pattern='^\\|*([^|]*)\\|*([^|]*)$'
Java Reguläre Ausdrücke#
regex, regular Expressionhttp://www.uni-koeln.de/rrzk/kurse/unterlagen/java/javaref/regex/index.htm
Bedeutung#
PageQuery geht über alle Seiten die den gleichen Präfix haben und holt sich alle Werte aus dortigen 2-spaltigen Tabellen. Diese Werte können dann tabellarisch angezeigt werden:PageQuery arbeitet daher besonders gut mit Formularhandlern wir z.b. dem GenericNamePageHandler
Praxisbeispiel#
Inventarliste in der Bibliothek
Technische Realisierung#
Ins Wiki einbinden#
- OWiki.jar ins WEB-INF/lib kopieren
- Server neustarten
im Wiki nutzen#
Pagequery wird vorzugsweise auf einer neuen leeren Seite angewandt.komplette Syntax
[{PageQuery pattern='^\\|*([^|]*)\\|*([^|]*)$' link='Zeile1' select='Zeile1,Zeile2'
from='test_' where='Zeile1=Bedingung1'}]
liefert
| Zeile1 | Zeile2 |
|---|---|
| Wert_Zeile1_Seite1 | Wert_Zeile2_Seite1 |
| Wert_Zeile1_Seite2 | Wert_Zeile2_Seite2 |
| Wert_Zeile1_Seite3 | Wert_Zeile2_Seite3 |
Elemente:#
select-Klausel#
ähnlich dem Select von SQLalle Spaltenbezeichner, die in der Übersicht angezeigt werden sollen
select='Zeile1,Zeile2'
from-Klausel#
ähnlich dem From von SQLPräfix aller Seiten, die angezeigt werden sollen.
from='test_'
Wird alle Seiten durchsuchen, die mit "test_" anfangen. Also test_Buch1 test_Buch2. Aber nicht testBuch3.
where-Klausel (optional)#
ähnlich dem where von SQLFiltert die Seiten heraus, die der Where-Klausel entsprechen
where='Zeile1=Bedingung1'
link (optional)#
Spaltenbezeichner, der als Link angezeigt wird (zur entsprechenden Seite)link='Zeile1'
pattern (optional)#
(für fortgeschrittene User vorzugweise mit Programmiererfahrung)Regulärer Ausdruck
beschreibt das Muster der Tabelle auf den Zielseiten
z.Bsp: |Zeichenkette|Zeichenkette entspricht: pattern='^\\|([^|]*)\\|([^|]*)$' flexibles pattern pattern='^\\|*([^|]*)\\|*([^|]*)$'
Java Reguläre Ausdrücke#
regex, regular Expressionhttp://www.uni-koeln.de/rrzk/kurse/unterlagen/java/javaref/regex/index.htm