Hilfe:Sortierbare Tabellen

Themenübersicht > Wikisyntax > Sortierbare Tabellen

Ab der Mediawiki-Version 1.9 gibt es ein neues Feature zur alphabetischen Sortierung mehrspaltiger Tabellen, sog. sortable tables. Dazu wird ein klientseitiges Java-Script eingesetzt.

AnwendungBearbeiten

Eine sortierbare Tabelle muss die Klasse sortable enthalten. Die Überschriftenzellen (<th> oder !) der Spalten erhalten dann ein zusätzliches Pfeil-Symbol zur Änderung der Sortierung, auf das man zur Änderung der Sortierreihenfolge drücken kann. Der Klassenbezeichner sortable kann natürlich mit weiteren Klassenbezeichnern kombiniert werden (Trennung mit Leerräumen). Nachfolgendes Beispiel verdeutlicht die Schreibweise:

{| class="sortable"
|-
! Überschrift erste Spalte
! Überschrift zweite Spalte
 ...
|-
| Wert erste Spalte
| Wert zweite Spalte
 ...
|}

SortierungBearbeiten

Die Sortierung startet grundsätzlich am ersten nicht-leeren Zeichen, d.h. führende Leerräume werden übersprungen. Für die Wahl des Sortierungskriteriums wird die erste nicht-leere Zelle der entsprechenden Tabellenreihe herangezogen. Nach einer Sortierung kann sich unter Umständen das Sortierkriterium ändern:

  • Üblicherweise wird alphabetisch sortiert, wenn die Einträge keine Zahlen darstellen. Die Sortierung erfolgt nach der Stellung der Zeichen im Unicode, wobei für die Sortierreihenfolge Groß- in Kleinbuchstaben umgewandelt werden. Als Faustregel gilt: Zuerst kommen die Satzzeichen, dann die Buchstaben, und dann die Zeichen, die keine ASCII-Zeichen darstellen. Nachfolgendes Symbolfolge demonstriert die Sortierreihenfolge: !"#$%&'()*+,-./09:;<=>?@[\]^_'az{|}~é—.
  • Zahlen werden der Größe nach sortiert, wenn die erste nicht-leere Zelle eine Zahl enthält. Zahlen dürfen keine Tausendertrenner oder Leerzeichen enthalten. Wissenschaftliche Natation und Vorzeichen (+, -) sind erlaubt. Die erste nicht-leere Zelle darf aber kein Vorzeichen bzw. keine wissenschaftliche Natation enthalten.
  • Datumsangaben werden sortiert, wenn die erste nicht-leere Zelle eine Datumsangabe der Form tt-mm-jj oder tt-mm-jjjj enthält.
  • Währungsangaben werden der Größe nach sortiert, wenn die erste nicht-leere Zelle eine Angabe enthält, mit einem Dollar- ($) oder Fragezeichen beginnt.

Das (alphabetische) Sortierkriterium kann mit Sortierschlüsseln data-sort-value beeinflusst werden, die als Zellenattribute eingefügt werden können (siehe hier den Abschnitt Datumssortierung).

Problem: TausendertrennzeichenBearbeiten

Zahlen mit Tausendertrennzeichen lassen sich nur dann sinnvoll alphabetisch sortieren, wenn sie dieselbe Länge besitzen.

Problem: DatumssortierungBearbeiten

Das Datumsformat tt-mm-jjjj ist in den meisten Fällen nicht besonders sinnvoll bzw. sehr eingeschränkt. Eine Sortierung würde nur dann sinnvoll, wenn sie mit der vierstelligen (!) Jahreszahl beginnt, weil sie dann als alphabetisch behandelt wird.

Das kann man aber ausnutzen, indem man Blindangaben vor jede Zahl setzt. Die Blindangaben enthalten dann die sortierbare vierstellige Angabe. Im Falle von negativen Zahlen ersetzt man die Jahresangabe durch ein ASCII-Zeichen, das vor den Ziffern einsortiert ist (z.B. das Ausrufezeichen) und einer Zahl, die eine richtige Sortierung ermöglicht, am einfachsten die Zahl 10000-abs(wirkliche Jahreszahl). Nachfolgende Bespiele sollen dies demonstrieren:

{|
|-
| data-sort-value="0005" | Jahr 5 n. Chr.
|-
| data-sort-value="2006-12" | Dezember 2006
|-
| data-sort-value="2006-12-01" | 1. Dezember 2006
|-
| data-sort-value="!9999-01-01" | 1. Januar 1 v. Chr. (weil 9999 = 10000-1 ist).
|}

(Mit einer Jahreszahl 0 kann es keine Schwierigkeiten geben, weil es das Jahr Null nicht gibt.)

Gerade und ungerade TabellenzeilenBearbeiten

Das Skript unterstützt ebenfalls die (farblich) unterschiedliche Gestaltung von Tabellenzeilen. Gerade Tabellenzeilen müssen hierzu die Klassenangabe class="even", ungerade die Klassenangabe class="odd" enthalten. Nach einer Sortierung werden die Klassenangaben angepasst, so dass gerade und ungerade Zeilen wieder korrekt unterschieden werden.

{| class="sortable"
|-
! Überschrift erste Spalte
! Überschrift zweite Spalte
 ...
|- class="even"
| Wert erste Spalte
| Wert zweite Spalte
 ...
|}

Siehe auchBearbeiten