Hilfe:Tabellen/Sortierung

aus Wikipedia, der freien Enzyklopädie
(Weitergeleitet von Hilfe:TSORT)
Zur Navigation springen Zur Suche springen

Diese Hilfeseite stellt alles dar, was es zu sortierbaren Tabellen in einem Wiki zu wissen gibt.

Das sind Tabellen, bei denen die Leser dynamisch in ihrem Browser die Zeilen beliebig oft umsortieren können.

Bedienung durch Leser

[Bearbeiten | Quelltext bearbeiten]

Grundsätzlich ist aktiviertes JavaScript beim Benutzer (bei dir ist JavaScript momentan nicht aktiviert) erforderlich; andernfalls wird nichts im Browser wirksam, das auf dieser Hilfeseite dargestellt ist. Bei Mobilgeräten bzw. der dafür vorgesehenen Darstellung (anders als momentan – „Desktop“) wird diese Funktion seit Juli 2022 angeboten.

Bei einer Tabelle, bei der eine oder mehrere Spalten sortierbar sind, werden in den Kopfzeilen rechts außen kleine Doppelpfeile angezeigt.

Die Sortierung einer Spalte wird ausgelöst, indem die entsprechende Kopfzelle angeklickt wird, die ausgewählte Spalte wird nun zunächst mit dem niedrigsten Wert oben sortiert.

  • Es ist nicht erforderlich, genau die Pfeilspitze oder das Pfeilsymbol zu treffen, die komplette Kopfzelle ist aktiv.
  • Verlinkungen in Kopfzellen sortierbarer Tabellen sind möglich;
    • um die Sortierung auszulösen, darf daher nicht der verlinkte Text, sondern es müsste dann das Pfeilsymbol angeklickt werden.
  • Eine Zuweisung von Tooltips über das Attribut !titel="Tooltiptext"| bleibt wirkungslos.

Wurde eine Sortierung ausgelöst, so wechselt das Symbol dieser Spaltenkopfzeile von zwei Pfeilspitzen auf eine.

  • Das Icon zeigt an, dass die Zeilen jetzt vom kleinsten zum größten Wert sortiert sind und durch erneutes Anklicken in umgekehrter Reihenfolge sortiert werden können.
  • Das Icon zeigt an, dass die Zeilen jetzt vom größten zum kleinsten Wert sortiert sind und durch erneutes Anklicken wiederum die Reihenfolge umgekehrt werden kann.

Ein Tooltip weist darauf hin, welche Option durch den nächsten Klick ausgelöst würde. Bei einem dritten aufeinanderfolgenden Klick auf die Sortierung einer Spalte wird seit Juni 2020 diese Spalte auf die ursprüngliche Reihenfolge zurückgesetzt und der Doppelpfeil erscheint wieder. Dies war zuvor nur durch Neuladen der Seite möglich.

  • Ein Klick auf eine andere Spalte stellt für die bisher maßgebliche wieder den Doppelpfeil her.
  • Bei gleichen Sortierwerten in aufeinander folgenden Zeilen bleibt die zuletzt eingenommene Abfolge erhalten.

Nach mehreren Spalten simultan lässt sich sortieren, indem zusammen mit der Umschalttaste eine weitere Kopfzelle angeklickt wird; diese wird dann vorrangig und die bisher maßgebliche Spalte legt bei gleichen Werten innerhalb der vorrangigen Spalte die Reihenfolge fest.

Die Texte der sortierbaren Kopfzellen sind wegen der Schaltfunktion nur kopierbar, wenn sie beginnend von außerhalb des Tabellenkopfes markiert werden.

Land Domain Telefonvorwahl
Deutschland .de 0049
Österreich .at 0043
Schweiz .ch 0041

(unterschiedliche Linktypen: Weiterleitung, BKL, Direktlink)

Quelltext zur Erzeugung der oberen Tabelle:

{| class="wikitable sortable"
|-
! Land
! Domain
! Telefonvorwahl
|-
| Deutschland
| .de
| 0049
|-
| Österreich
| .at
| 0043
|-
| Schweiz
| .ch
| 0041
|}

Deklaration und Gestaltung einer sortierbaren Tabelle

[Bearbeiten | Quelltext bearbeiten]

Dazu müssen zwei Bedingungen erfüllt sein:

  1. Die Tabelle muss als „sortierbar“ vereinbart werden.
  2. Es gibt eine Kopfzeile.

Zusätzlich sollte eine sortierbare Tabelle immer aus mehr als einer Zeile bestehen, da sonst nichts sortiert werden kann.

Tabelle als „sortierbar“ vereinbaren:

  • Die Klasse sortable muss im Tabellenkopf deklariert werden.
  • Dazu muss der Klassenname sortable in der durch Leerzeichen voneinander getrennten Aufzählung im Attribut class= genannt werden.
  • Die gesamte Tabelle, die durch {| eröffnet wird, muss diese Klasse erhalten.

Codebeispiel:

{| class="wikitable sortable"
|-
! Land

Wenn eine Spalte nicht sortiert werden soll, dann in der Kopfzelle class="unsortable"| eintragen.

Codebeispiel:

|-
!class="unsortable"| Abbildung

Siehe VisualEditor.

  • Über Eigenschaften das Menü „Tabelleneigenschaften“ öffnen.
  • Dort „Sortierbar“ →
     0000_ 
    einschalten.

Im Seitentext muss eine sinnvolle Reihenfolge der Zeilen vorgegeben sein.

  • Diese wird Lesern zunächst angezeigt.
  • Leser ohne aktiviertes JavaScript würden diese Reihenfolge auch nicht ändern können.
  • Beim Erstellen einer Druckversion bleibt diese Reihenfolge erhalten.
  • Ergeben sich beim Sortieren für mehrere Zeilen gleiche Sortierkriterien, dann bleibt für diese die ursprüngliche Reihenfolge zunächst erhalten; bis zu einem anderen Sortiervorgang.

Dekorative Gestaltung

[Bearbeiten | Quelltext bearbeiten]

Beispiele zur Farbgestaltung von Kopfzeilen sind bei Hilfe:Tabellen/Beispiele #Sortierung dargestellt.

Typen von Zeilen

[Bearbeiten | Quelltext bearbeiten]

Zu den sortierbaren Spalten müssen Kopfzellen vorhanden sein.

  • In der Wikisyntax wird eine Kopfzelle durch ein Ausrufezeichen ! zu Beginn der Quelltextzeile realisiert.
  • Eine oder mehrere Zeilen zu Beginn einer Tabelle, die nur Kopfzellen enthalten, nennt man „Kopfzeilen“.

Es sollte besser nur eine Zeile mit Kopfzellen geben, bzw. zu jeder Spalte nur genau eine Kopfzelle.

Die kleinen Pfeile in den Kopfzellen werden über Hintergrundbilder realisiert. Aus diesem Grund darf einer Kopfzelle keine pauschale CSS-Eigenschaft style="background:…" zugewiesen werden, weil dies sehr wahrscheinlich in den meisten Browsern das gleichzeitige Hintergrundbild blockieren würde. Um eine Kopfzelle trotzdem einzufärben, gibt es folgende Möglichkeiten:

  • style="background-color:#ABCDEF;" (also nur die Hintergrundfarbe zu setzen, wodurch die anderen Eigenschaften des Zellenhintergrunds nicht beeinflusst werden)
  • class="hintergrundfarbe8" für die Zelle oder besser gleich die gesamte Kopfzeile; auch hier wird nur die Farbe gesetzt.

Alle Zellen der Kopfzeile müssen mittels ! als Kopfzellen deklariert sein.

Codebeispiel: Klassenzuweisung für die komplette Sortierzeile

{| class="wikitable sortable"
|- class="hintergrundfarbe8"
! Land !! Domain !! Telefonvorwahl

Codebeispiel: Stylezuweisung für einzelne Spalten der Sortierzeile

{| class="wikitable sortable"
|-
! Land !!style="background-color:gold;"| Gold !!style="background-color:silver;"| Silber !!style="background-color:#CC9966;"| Bronze

So lassen sich auch unterschiedliche Farben für die Spalten realisieren, wie beispielsweise in Medaillenspiegeln.

Zeilen mit Zwischenüberschriften usw., die nicht sinnvoll inhaltlich zuzuordnen sind, können mit der Klasse sortbottom gekennzeichnet werden; siehe dazu Fußzeilen.

Es gibt Zeilen, die immer am Fuß der Tabelle einsortiert – also von der Sortierung ausgenommen werden sollen:

  • „Kopfzeilen“, die zwar mittels ! markiert sind, jedoch nicht zu den obersten Zeilen der Tabelle gehören, werden am Ende einsortiert, wenn darunter keine weiteren Zeilen mit Inhalten folgen.
  • Normale Zeilen (|), die mittels der Klasse sortbottom gekennzeichnet wurden, verbleiben dort ebenfalls.
  • „Kopfzeilen“ (!), die sich zwischen den normalen Inhaltszeilen befinden, gehen in die Sortierung ein; Zwischenüberschriften sollten daher ebenfalls mittels sortbottom für die Sortierung der eigentlichen Inhalte an das Ende der Tabelle gestellt werden.

Codebeispiel:

|-
| Reis   ||     5.000 ||    2.000
|-
! Gesamt !! Einnahmen !! Ausgaben
|}

Codebeispiel:

|- class="sortbottom"
| Saldo

Codebeispiel: Eine Kopfzeile als Überschrift zwischen den Zeilen wird normal mitsortiert, was die Zuordnung zu dieser Überschrift beim Sortieren verfälschen kann

|-
| Reis   ||     5.000 ||    2.000
|-
!colspan="3"| Früchte
|-
| Äpfel  ||        50 ||      100
|-
! Gesamt !! Einnahmen !! Ausgaben
|}
  • Die erste Kopfzeile nach der Sortierkopfzeile bleibt immer oben; steht eine Kopfzeile als unterste Zeile am Tabellenende, so bleibt sie immer unten; Kopfzeilen im Tabellenkörper werden generell erst einmal mitsortiert.
  • Sie können über class="sortbottom" nach unten geschoben werden

Es ist möglich, eine Zeile zu definieren, die einer Leit-Zeile, die für die Sortierung maßgeblich ist, immer direkt folgt.

Jede Zeile, die mit der Klasse expand-child gekennzeichnet ist, folgt der bzw. den vorangehenden bis zu einer der Sortierung unterworfenen Zeile.

  • Der Inhalt dieser Zeile wird also von der Sortierung ausgeschlossen und nicht von der Leit-Zeile getrennt.
  • Achtung: Der Anhang-Zeile darf kein eigener Sortierwert zugeordnet werden, da dieser die Verbindung lösen würde und sich die Zeile dann anders als zugehörige Leit-Zeile einsortiert.
  • Für Zwischenüberschriften, denen solche Zeilen angehängt werden, empfiehlt es sich zugleich diese während der Sortierung über sortbottom an das Tabellenende zu setzen.

Codebeispiel: Inhaltszelle mit Anhang

|-
| Lampukistan || Bizonesisch || …
|- class="expand-child"
|colspan="3"| Anmerkung zu Lampukistan: …

Der Inhalt (Anmerkung zu Lampukistan) der angehängten Zeile bleibt auch während der Sortierung immer bei der zugeordneten Leit-Zeile (Lampukistan). Ohne diese Zuordnung würde sie in der Sortierreihenfolge zu den mit A beginnenden Inhalten gestellt werden.

Codebeispiel: Zwischenüberschrift mit Anhang

|- class="sortbottom"
!colspan="3"| Dynastie XY (ca. 538–221 vor Christi)
|- class="expand-child sortbottom"
! Herrschername
! Amtszeit
! Anmerkungen

Die Zwischenüberschrift wird so während der Sortierung gemeinsam mit ihrer Anhangzeile an das Ende der Tabelle gestellt und von der Sortierung ausgeschlossen. Dabei müssen beide Zeilen die Zuweisung sortbottom bekommen, da der Anhang der Leit-Zeile sonst nicht mehr folgen kann und wie eine normale Zeile behandelt wird.

Zellen über mehrere Zeilen oder Spalten

[Bearbeiten | Quelltext bearbeiten]

Derartige verbundene Zellen sind eigentlich unproblematisch.

  • Zellen über mehrere Zeilen (rowspan) werden mit der allerersten Sortierung dupliziert. Dementsprechend erscheinen Zellen gleicher Inhalte mehrfach, auch wenn nach einer anderen Spalte sortiert wird, und hinterlassen keine leeren Flecken.
  • Bei Zellen über mehrere Spalten (colspan) wird der Sortierwert von der ersten beteiligten Zelle verwendet. Das könnte im Einzelfall zu unbeabsichtigten Ergebnissen führen; würde dann aber auch Fragen nach der Logik dieser Struktur aufwerfen.

Eine Überschreitung der Anzahl der vorhandenen Zeilen durch den Wert rowspan führt unter Umständen dazu, dass die komplette Sortierfunktion der Tabelle außer Kraft gesetzt wird. Daher bitte nie mit einem auf Zuwachs angelegten rowspan="99" (offenes Ende) arbeiten.

Datentypen – Konzept

[Bearbeiten | Quelltext bearbeiten]

Computern muss vorgegeben werden, in welcher Reihenfolge sie die Zellen einer Spalte anordnen sollen.

  • Die simpelste Lösung ist nach Zeichenwert („lexikalisch“) – aber das ist inhaltlich oft unbefriedigend, funktioniert eher im rein englischen Alphabet.
  • Umlaute und akzentuierte Buchstaben sollen an den erwarteten Plätzen erscheinen.
  • Bei der simpelsten Lösung nach Zeichenwert ist die Zahl 17 kleiner als 4, weil der Zeichenwert von 1 kleiner ist als der von 4 und die Sortierung mit dem Vergleich der ersten Zeichen angefangen wird; nur wenn diese gleichwertig sind, werden auch nachfolgende Zeichen verglichen.

Es gibt daher unterschiedliche Datentypen, die dann spezielle Regeln zum Sortieren auslösen.

2012, 2015, 2017 gab es deutliche Fortschritte bei einzelnen Datentypen, während die ursprüngliche Realisierung um 2009 noch ziemlich plump gewesen war.

Sortierung nach Zeichenwert

[Bearbeiten | Quelltext bearbeiten]

Jedes Zeichen in einem digitalen Text hat eine bestimmte Nummer.

  • Eine typische nummerierte Abfolge ist in dieser Tabelle zu sehen.
  • Eine strikte Anwendung dieser Reihenfolge für die Sortierung hätte die nachstehenden Seltsamkeiten zur Folge:
    • Alle Kleinbuchstaben kommen hinter den Großbuchstaben, also a hinter Z.
    • Die Umlaute und akzentuierten Buchstaben kommen erst hinter den Grundbuchstaben, also É hinter z und é hinter Ö.
    • Manche Satzzeichen erscheinen mitten zwischen den Gruppen von Buchstaben; zu erwarten wäre beispielsweise, dass alle besonderen Zeichen, die weder Buchstabe noch Ziffer sind, alle am Anfang oder aber hinter allen anderen Zeichen einsortiert würden.

Deshalb wurde dieses Grundmuster abgewandelt zu einer modifizierten lexikalischen Sortierung.

Datentyp automatisch ermitteln

[Bearbeiten | Quelltext bearbeiten]

Es werden die obersten (zurzeit fünf) nicht leeren Zeilen jeder Spalte auf ihren Sortierwert untersucht.

  • Erfüllen alle dasselbe Muster für einen bestimmten Datentyp, dann wird dieser Datentyp für die gesamte Spalte angenommen.
  • Sind die Zellen leer oder ergibt sich kein klares Muster, dann wird der Standard-Typ text angenommen.
  • Ist eine explizite Festlegung vorhanden, wird nicht analysiert.

Datentyp explizit festlegen

[Bearbeiten | Quelltext bearbeiten]

Einer Kopfzelle kann der Datentyp für die Spalte darunter ausdrücklich zugewiesen werden.

Dazu muss für diese Kopfzelle das Attribut data-sort-type="xyz" mit dem entsprechenden Schlüsselwort statt xyz gesetzt werden. Groß- und Kleinschreibung wird bei der Sortierung nicht berücksichtigt. Die folgenden Werte sind für data-sort-type möglich:

Die Vorlage:KopfZelle ermöglicht das ebenfalls, was ggf. im VisualEditor hilfreich sein könnte.

Codebeispiele:

|-
!data-sort-type="number"| Häufigkeit

oder

|-
! {{KopfZelle|Sortierung=number}} Häufigkeit

Unsortierbare Spalte

[Bearbeiten | Quelltext bearbeiten]

Wenn eine Spalte keinen sinnvoll sortierbaren Inhalt enthält, etwa Bilder oder beliebige Anmerkungen, dann kann sie von der Sortierung ausgenommen werden.

Dazu muss in dieser Kopfzelle die Klasse unsortable gesetzt werden.

Die Vorlage:KopfZelle könnte ggf. im VisualEditor hilfreich sein.

Codebeispiel:

|-
!class="unsortable"| Abbildung

oder

|-
! {{KopfZelle|unsortierbar=1}} Abbildung

Inhalt einer Zelle

[Bearbeiten | Quelltext bearbeiten]

Als Inhalt einer Zelle wird immer der gesamte textliche Inhalt gezählt.

  • Nicht dazu gehören Formatierungsanweisungen, etwa für Fett- oder Kursivschrift, verkleinerte Schrift oder Zeilenumbrüche.
  • Anders ausgedrückt: Nur der Inhalt der Elemente wird berücksichtigt, nicht jedoch die „Tags“.
  • Leerzeichen („Leerraum“) zu Beginn und am Ende werden ignoriert.
  • Es ist irrelevant, ob die Inhalte sichtbar sind oder ggf. versteckt sind oder auch nur eine Lücke hinterlassen.

Bilder werden nach einem expliziten Alternativtext alt= sortiert, ersatzweise nach der Bildlegende.

Sortierwert explizit festlegen

[Bearbeiten | Quelltext bearbeiten]

Wenn der Inhalt der Zelle nicht den gewünschten Effekt liefert, etwa an eine Zahl oder ein Datum noch weiterer Text angehängt ist, der die Erkennung stören würde, dann kann der Sortierwert als Attribut data-sort-value der Zelle zugewiesen werden. In diesem Fall wird der Inhalt ignoriert.

Codebeispiel:

|-
|data-sort-value="10"| Zehn
|-
|data-sort-value="11"| Elf
|-
|data-sort-value="12,5"| Zwölfeinhalb

Die modernen Vorlagen wirken nach dieser Methode.

Einzelne Datentypen

[Bearbeiten | Quelltext bearbeiten]
Schlüsselwort
text
Zweck
Alphabetische Sortierung verbessern gegenüber dem Zeichenwert, sofern das mit einfacher Programmierung möglich ist – Konfigurationsdaten müssen mit der Seite in den Browser der Leser übertragen und können dann dort möglicherweise hinterlegt werden.
Ausdehnung
Der gesamte Inhalt der Zelle, soweit zur Unterscheidung benötigt.
Regeln
Grundlegend ist der Zeichenwert.
Groß- und Kleinschreibung sollte ignoriert werden.
In einem deutschsprachigen Wiki wurden in den ersten Jahren nur die äöüßÄÖÜ erkannt und bei ihren Grundbuchstaben einsortiert.
Die Zeichen àé beispielsweise wurden nicht gesondert behandelt; sehr wohl aber in einem französischsprachigen Wiki. Dort waren hingegen die Umlaute wie Ä unbekannt.
Mittlerweile wird zusätzlich versucht, eine Funktion der Browser[1] zu nutzen, wodurch Tausende von Zeichen in verbesserter Reihenfolge erscheinen.
Das wird aber nicht in jedem Browser für jede Sprache unterstützt. Zudem gibt es neben klassischen Webbrowsern auch andere Systeme, etwa die Mobil-App. Gleichwohl sollte der Wikitext immer einen robusten Sortierwert liefern, sobald über äöüßÄÖÜ hinaus abgewandelte Buchstaben oder aber Sonderzeichen auftreten. Was beim Autor anscheinend von selbst funktioniert und zusätzliche Bemühungen überflüssig erscheinen lässt, muss nicht bei allen Lesern genauso dargestellt werden.
Besonderheit
Wird eine einzeln stehende Zahl erkannt, dann wird bei sonst gleichem Kontext nach dem numerischen Wert dieser Zahl sortiert und nicht nach deren einzelnen Ziffern.
Vorlagen
  • Vorlage:TextZelle – robuster Umgang mit Sonderzeichen und diakritischen Modifikationen von Buchstaben; unabhängig vom Browser.
  • Vorlage:PersonZelle – Personen nach Familiennamen sortieren
Schlüsselwort
number
Zweck
Numerische Abfolge (Dezimalbrüche).
Ausdehnung
Der gesamte Inhalt der Zelle.
Nichtnumerische Zusätze verhindern die automatische Erkennung des Datentyps der Spalte.
Regeln
Grundlegend ist international das computergerechte, „englische“ Format.
  • Bei einem deutschsprachigen Wiki wird das abgewandelt; die Bedeutung von Punkt und Komma vertauscht.
  • Dezimaltrenner ist hier das Komma ,.
  • Punkt . oder (ASCII-)Leerzeichen sowie geschützte Leerzeichen U+00A0 werden hier als Tausendertrennzeichen gewertet und ignoriert.
  • Ein typografisches Minuszeichen wird alternativ akzeptiert; ein Pluszeichen + darf vorangestellt werden.
  • Ein E wird als Exponentialdarstellung erkannt („Fortran-Stil“).
  • Ein einzelnes Prozentzeichen % darf nachgestellt sein; es beeinflusst den Wert jedoch nicht, führt also nicht zu einer Umrechnung, sondern wird einfach ignoriert.
  • Führende Nullen oder nach dem Dezimaltrenner schließende Nullen beeinflussen den Wert nicht.
Die Beträge von Zahlen müssen zwischen rund 10−323 und 10308 liegen; hinzu kommen glatt Null und der gleiche Zahlenbereich negativ.
Nicht erkannte Werte werden als „Unendlich“ eingestuft.
Wenn die Spalte explizit als number gekennzeichnet wurde, dann stört angehängter Text wie etwa eine Maßeinheit nicht; es werden dann nur die führenden Ziffern und ggf. ein Vorzeichen für den Sortierwert herangezogen und die Erkennung des Wertes an unbekannten Zeichen wie etwa einem Buchstaben abgebrochen.
Vorlagen
Schlüsselwort
date
Zweck
Kalendertage unterscheiden.
Ausdehnung
Der gesamte Inhalt der Zelle.
Alle Zusätze verhindern die automatische Erkennung des Datentyps der Spalte.
Regeln
Es muss ein vollständiges Datum aus Tag, Monat und Jahr angegeben werden.
Jahreszahlen müssen vierstellige Zahlen sein.
  • Jahreszahlen vor dem Jahr 100 würden dem Zeitraum 1930–2029 zugeschlagen werden.
  • Antike Zeitpunkte sind nicht möglich (ISO-Datum als text für die gesamte Spalte verwenden).
Verschiedene Formate sind möglich; genauer: eine bestimmte Formatierung wird weder erkannt noch erwartet.
Nur die Reihenfolge Tag, Monat, Jahr muss gegeben sein (deutschsprachig).
Trennzeichen zwischen den Elementen sind recht beliebig.
Monate können als Zahl, deutscher Name und auch mit dessen ersten drei Buchstaben abgekürzt werden.
In einigen Fällen können einem Datum (etwa im Format T.M.JJJJ mit Ziffern) Zusätze nachgestellt werden. Wenn die Spalte explizit als date gekennzeichnet wurde, dann würden hier Buchstaben nicht als mögliche Monatsnamen detektiert werden und die Erkennung bricht nach den Ziffern ab. Sicherer ist jedoch, hierfür über Vorlage oder expliziten Sortierwert eine robuste Zuweisung vorzunehmen.
Vorlagen
  • Vorlage:DatumZelle – sichere Zuordnung, zahlreiche Formatierungen; auch außerhalb bestimmter Jahre oder nur nach Monaten
Dieser Modus wurde bis Oktober 2022 unterstützt. Mittlerweile wäre text zu verwenden (ein unbekannter Datentyp fällt von selbst darauf zurück). Ein Datum per ISO 8601 ist von Natur aus lexikalisch sortierbar; das ist gerade der Sinn dieses auf computergerechte Anwendungen ausgelegten Formats.
Schlüsselwort
isoDate
Zweck
Kalendertage unterscheiden; auch nach Uhrzeit bis hin zur Zeitzone sowie in der Antike (vor dem Jahr 100).
Ausdehnung
Der gesamte Inhalt der Zelle.
Alle Zusätze verhindern die Erkennung.
Regeln
Ein Format nach ISO 8601 in beliebiger Gliederung und Kürzung kann verwendet werden.
  • Es muss mit einer vierstelligen Jahreszahl beginnen. Sie wird aber bei 0001 auch dem Jahr 1 zugeordnet.
  • Es kann Jahreszahl oder Jahreszahl-Monat oder Jahreszahl-Monat-Tag oder Jahreszahl-Monat-Tag Stunde usw. spezifiziert werden.
  • Es kann mit - und : gegliedert oder nur mit Ziffern geschrieben werden.
  • Tag und Uhrzeit können mit T oder Leerzeichen oder überhaupt nicht getrennt sein.
Negative Jahreszahlen bedeuten die Antike.
Besonderheit
Eine Jahreszahl oder ein ungegliedertes Datum ist nicht von einer natürlichen Zahl unterscheidbar. Der Datentyp der Spalte muss also ggf. explizit vorgegeben werden.
Vorlagen
  • Vorlage:DatumZelle – sichere Zuordnung, zahlreiche Formatierungen; auch außerhalb bestimmter Jahre oder nur nach Monaten
Schlüsselwort
usLongDate
Zweck
Kalendertage unterscheiden; auch nach Uhrzeit bis hin zur Zeitzone.
Ausdehnung
Der gesamte Inhalt der Zelle.
Alle Zusätze verhindern die Erkennung.
Regeln
Erwartet wird etwas nach dem Muster: July 4, 1776 2:30 PM
Gleichzeitig müssen jedoch in einem deutschsprachigen Wiki deutsche Monatsnamen verwendet werden.
Damit ist dieses Format für uns praktisch unbrauchbar.
Schlüsselwort
time
Zweck
Uhrzeit oder Zeitspanne (Dauer) auf Minuten.
Ausdehnung
Der gesamte Inhalt der Zelle.
Alle Zusätze verhindern die Erkennung.
Regeln
Erwartet wird etwas nach dem Muster: 00:00
Es darf am bzw. pm nachgestellt werden; was sogar zur Umrechnung in das 24-Stunden-System führt.
Vorlagen
Schlüsselwort
IPAddress
Zweck
IPv4-Adressen formatiert wie: 10.123.234.987
Ausdehnung
Der gesamte Inhalt der Zelle.
Alle Zusätze verhindern die Erkennung.
Regeln
Es wird numerisch für jede einzelne der vier Gruppen sortiert.
Dieser Modus war nie wirksam programmiert. Im Oktober 2022 wurde er längerfristig aufgegeben.
Schlüsselwort
url
Zweck
Geplant war wohl, die TLD zu erkennen und dann zunächst die Domain in Gruppen von rechts nach links zu sortieren; ähnlich etwa hier.
Innerhalb gleicher Domains solle dann lexikalisch nach Pfaden sortiert werden; bei gleichem Pfad nach Query-Ausdruck und Fragment.
Schlüsselwort
currency
Zweck
Dieser Datentyp war früher dafür konzipiert gewesen, $547 oder 123¥ zu erkennen und zu verarbeiten.
Der verbesserte Text-Modus macht dies jedoch überflüssig, weil die Zahlenwerte dort genauso erkannt werden und sinnvoll vergleichbare Werte auch dieselbe Währungseinheit voraussetzen.

Eine Serie von Vorlagen, deren Name jeweils auf das Wort Zelle endet, ist zur sicheren Unterstützung der Sortierfunktion bereitgestellt.

  • Sie können beliebig mit der Direktangabe von Werten in Zellen kombiniert werden, und brauchen nur dort verwendet werden, wo in der Zelle noch weitere Angaben stehen, die eine Erkennung stören würden.
  • Sie sind speziell für eine Zusammenarbeit mit dem VisualEditor ausgelegt, so gut das überhaupt möglich wäre.
  • Sie unterstützen auch alle sonst erforderlichen Attribute einer Zelle.
  • Sie führen keine vorgetäuschten Inhalte in das HTML-Dokument ein.

Ein grundsätzlicher Vorteil der Verwendung derartiger Vorlagen liegt darin, dass der inhaltliche Wert nur einmal angegeben wird, jedoch nach zwei Methoden formatiert wird:

  1. Gemäß Regeln nach Datentyp als Sortierschlüssel.
  2. Als für die Leser sichtbare Darstellung.

Wird der Wert verändert, ändern sich beide Resultate automatisch. Irrtümer, dass der sichtbare Wert und der Sortierwert nicht zusammenpassen, sind ausgeschlossen.

Moderne Vorlagenfamilie:

KopfZelle
für die Kopfzeile; Datentyp vorgeben oder Sortierbarkeit abschalten
TextZelle
für allgemeinen Text; Datentyp text
PersonZelle
für Personen nach Familienname; Datentyp text
ZahlZelle
für Zahlen; Datentyp number
ZahlExpZelle
wie ZahlZelle, für Exponentialdarstellung
DatumZelle
für ein auch unvollständiges Datum, ISO-Datum, Zeit der jeweiligen Datentypen

Zu beachten ist, dass diese Vorlagen wo immer erforderlich ein Pipe-Symbol | mitliefern, das den Attributbereich vom sichtbaren Wert trennt. Dieses darf deshalb nicht zusätzlich angegeben werden. Zur Sicherheit sollten mögliche weitere Attribute über die Vorlagenparameter spezifiziert werden.

Hin und wieder gibt es den Wunsch, eine nummerierte Rangliste im Sinne von Top 10 zu pflegen, also was am längsten, schnellsten, teuersten, schwersten, ältesten, höchsten usw. wäre.

Dabei müssen, wenn neue Rekordhalter auftreten, Zeilen eingeschoben und alle Zeilen darunter eine veränderte Rangnummer erhalten.

Mittlerweile gibt es die Möglichkeit, Zeilen mit einer Nummerierung darzustellen. Wenn allerdings die Sortierung dynamisch geändert wird, dann handelt es sich um die Nummerierung entsprechend der momentanen Sortierung und nicht mehr um die ursprüngliche Rangfolge – mit anderen Worten: Die Nummerierung in der Zählspalte bleibt unverändert.

Diese dargestellte Rangnummer muss dauerhaft Teil des Artikelquelltextes werden; es gibt keine sinnvolle Möglichkeit, sie erst bei der Anzeige des Artikels allen Lesern anzuzeigen und gleichzeitig auch noch die Zeilen nach anderen Kriterien wie dem Namen oder einem Datum sortieren zu können.

Zurzeit gibt es kein fertiges Werkzeug, einen Satz von Zeilen im Quelltext neu durchzunummerieren, obwohl dies grundsätzlich nicht allzu schwer zu schreiben wäre. Ein anderer Weg wäre es, eine umfangreiche Tabelle mit vielleicht 100 Plätzen in ein externes Tabellenkalkulationsprogramm zu übernehmen, dort neu zu nummerieren und wieder in den Wikitext einzufügen.

Eine gelegentlich angetroffene weitere Behelfslösung besteht darin, drei Tabellen zu kombinieren:

  1. Eine umschließende Layout-Tabelle enthält zwei Spalten in einer Zeile.
  2. In der ersten Spalte steht eine Tabelle, die nur die Rangnummer enthält.
  3. In der zweiten Spalte steht eine Tabelle, die die Beschreibung enthält.

Das funktioniert nur unter den folgenden Bedingungen:

  • Die Beschreibungen müssen in ihren Zellen garantiert einzeilig bleiben, weil die Rangnummer nur einzeilig angegeben ist und die Zeilen sonst verrutschen würden.
  • Die Tabelle mit den Beschreibungen darf nicht sortierbar sein; oder allenfalls solche Spalten, für die eine Nummerierung gemäß der separaten Abfolge ebenfalls sinnvoll wäre.
Rang
1
2
3
4
Nutzfläche (m²) Bezeichnung Staat Ort Art Baujahr
1.760.000 New Century Global Center VR China Chengdu Konsumkomplex 2013
1.575.000 Mecca Royal Clock Tower Hotel Saudi-Arabien Mekka Hotel 2012
1.500.000 Flughafen Dubai (Terminal 3) Vereinigte Arabische Emirate, Dubai Flughafenterminal 2008
1.024.000 CentralWorld Thailand Bangkok Einkaufszentrum 2006

Codebeispiel:

{| class="toptextcells"
|-
|
{| class="wikitable"
|-
! Rang
|-
| 1
|-
| 2
|-
||}
|
{| class="wikitable"
|-
! Nutzfläche (m²)
! Bezeichnung
|-
| 1.760.000
| New Century Global Center
|-
||}

Veraltete Vorlagen und obsolete Methodik

[Bearbeiten | Quelltext bearbeiten]

In den allerersten Jahren der Tabellensortierung, um 2009 herum, hatte es nur eine Sortierung nach Zeichenwert gegeben. Einen Sortierwert explizit festlegen konnte man produktiv erst um 2012.

Aus dieser Ära gibt es einige Hacks, die in Vorlagenprogrammierung und Artikel-Quelltexte umgesetzt wurden.

  • Typisch ist das Einfügen optisch ausgeblendeter Inhalte der Zellen.
  • Basierend darauf wurden für die Tabelle speziell ersonnene Sortierschlüssel erschaffen, etwa um die Jahreszahl oder den Monatsnamen oder eine Exponentialzahl so auf private Codes abzubilden, dass ihr Zeichenwert den gewünschten Erfolg hätte.

Die Sortierung nach Datum oder numerisch macht private Konstrukte meist überflüssig.

Unsichtbare Inhalte sind Inhalte

[Bearbeiten | Quelltext bearbeiten]

Die am Anfang des Zellentextes eingefügten, für menschliche Augen unsichtbaren Inhalte sind gleichwohl Inhalte, und sie verfälschen die Bedeutung.

  • Für Software ist die Unterscheidung in der Regel nicht relevant; dass die Sortierungssoftware das ignoriert, ist gerade das Funktionsprinzip.
  • Screenreader beachten hingegen eine optische Ausblendung und unterdrücken sie.
  • Suchfunktionen, sowohl Wiki-intern wie auch externe Suchmaschinen, berücksichtigen den gesamten in Wörter unterteilten Inhalt, ignorieren Markup und damit Anweisungen für die optische Präsentation, und können ggf. durch vorgetäuschte Inhalte verfälschte Wörter nicht mehr finden.

Beispiel:

  • Im nachstehenden Ausdruck sind vor und hinter dem Suchwort unsichtbare Nullen eingefügt worden: 0FindeMich0 (mittels Vorlage:0).
  • Das Suchwort kann jetzt nicht mehr gefunden werden.
  • Wird vor und nach dem Suchwort eine 0 angefügt, dann ist diese Suche erfolgreich.

Derselbe Effekt tritt ein, wenn optisch unsichtbare Inhalte nur zur Sortierung den Inhalten vorangestellt werden.

Veraltete Vorlagen

[Bearbeiten | Quelltext bearbeiten]

Die nachstehenden Vorlagen sind spätestens seit 2012 obsolet. Sie sollten nach und nach teilweise schlicht eliminiert werden, weil überflüssig; teils durch die moderne Vorlagenfamilie oder andere Techniken ersetzt werden:

Es ist keinerlei Vorlage erforderlich, wenn die Zelle ausschließlich Ziffern enthält; womöglich mit vorangestelltem Vorzeichen (plus oder minus), auch einem nachgestellten Prozentzeichen, und ggf. mittels Punkten sowie einem Komma gegliedert.

Sind vorangestellte bzw. nachgestellte Wörter, Maßeinheiten usw. vorhanden, so ist in genau diesen Zellen Vorlage:ZahlZelle (bzw. Vorlage:ZahlExpZelle) zu empfehlen. Das gilt auch, wenn optisch die Werte mit verschiedenen anderen Maßeinheiten dargestellt werden sollen, während sie intern auf ein einheitliches Bezugssystem umgerechnet werden.

Das gilt, wenn die gesamte Spalte als numerisch betrachtet wird. Anders ist es, wenn jede Zelle eine ganze Zahl mit nachgestellter Maßeinheit enthält. Hier zählt die Spalte als Text, aber die Zahl wird unabhängig von der nachgestellten (immer gleichen) Maßeinheit nach ihrem numerischen Wert sortiert und es wäre keine Vorlage erforderlich.

Vorlage:nts sollte auf die eine oder andere Art eliminiert werden.

Datumsvorlagen

[Bearbeiten | Quelltext bearbeiten]

Es ist je nach angestrebtem Effekt zu überlegen, welche Formatierung das Datum überhaupt haben soll.

  • In Tabellenspalten hat es sich als günstig erwiesen, Monatsnamen abzukürzen, die länger als vier Buchstaben sind.
    • Damit wird das Ungleichgewicht zwischen Mai und November vermieden.
    • Es ist für die Sortierung nicht erforderlich, dass das Datumsformat in jeder Zelle identisch ist. Damit können die kurzen Monatsnamen Juni und Juli ausgeschrieben und ähnlich lang wie Dez. verwendet werden.
    • Auf Mobilgeräten (Smartphones) besteht Platzmangel; die Spalten sollten möglichst schmal ausfallen (ggf. zweizeilig; in der ersten Zeile Tag und ggf. gekürzter Monatsname, in der zweiten die Jahreszahl).
  • In den meisten Fällen kann das Datum direkt angegeben werden.
  • Wenn die gesamte Spalte als Datum betrachtet wird, könnten gewisse Zusätze nachgestellt werden; was aber nicht zu empfehlen ist.

Die Vorlage:DatumZelle akzeptiert zahlreiche Formate für die Werte und stellt diese optisch in beliebigen Formaten dar; auch unvollständige (nicht taggenaue) Angaben. Zur Migration der veralteten Vorlagen:

  • {{dts|7|Feb|1997}} aus der Vorlagendoku lässt sich leicht mittels Regulärer Ausdrücke in der Textverarbeitung umwandeln in 7. Feb. 1997
  • {{Dtsx|08|04|1688}} aus der Vorlagendoku ließe sich etwas trickreicher wandeln in: {{DatumZelle|1688-04-08}}
  • Vorlage:Datum war überhaupt nicht zur Direkteinbindung in Artikeln vorgesehen, sondern soll Daten aus der Vorlagenprogrammierung innerhalb der Vorlagenprogrammierung formatieren.

Vorlage:dts und Vorlage:dtsx sollten auf die eine oder andere Art eliminiert werden; zumindest alle aus Direkteinbindungen in Artikel.

Universalvorlage

[Bearbeiten | Quelltext bearbeiten]

Bei Vorlage:SortKey gibt es ein breites Spektrum, auf welche Weise sie ersetzt werden könnte.

Je nach Inhalten kommen vorrangig in Frage:

Oft ist überhaupt keine Vorlageneinbindung oder Maßnahme erforderlich, weil der Wert ohnehin an der richtigen Stelle einsortiert wird.

Vorlage:SortKey sollte auf die eine oder andere Art eliminiert werden.

Wegen der störenden Effekte durch Täusch-Inhalte sollte eine alternative Lösung für Einbindungen der Vorlage:0 gefunden werden; gleichfalls Vorlage:AdjustNumber.

In Tabellen bietet es sich an, die CSS-Deklaration padding zu nutzen, die keinen Textinhalt einfügt, sondern einen reinen Weißraum bewirkt, und damit den gewünschten Abstand zu einer Bezugskante.

Oft wird dies im Zusammenhang mit Zahlen vorgenommen, um das Dezimalkomma untereinander auszurichten, oder aber unterschiedlich große Zahlen zwar linksbündig anzuordnen, aber Einer- unter Einerstellen, Zehner unter Zehner usw. auszurichten. Hierfür bietet Vorlage:ZahlZelle Möglichkeiten für das links- oder rechtsbündige padding an.

Barrierefreiheit

[Bearbeiten | Quelltext bearbeiten]

Um Screenreader zu unterstützen, werden je nach aktuellem Zustand jeder Kopfzelle dynamische Attribute mitgegeben:

  • role="columnheader button"
  • title="Absteigend sortieren"
  • class="headerSort headerSortUp"

Falls über Tab navigiert wird, kann in der Kopfzelle über Enter ein Wechsel der Sortierung ausgelöst werden.

Weitere Informationen

[Bearbeiten | Quelltext bearbeiten]
MediaWiki: Tablesorter – Freie Wikisoftware (englisch)
Meta-Wiki: Help:Sorting – Globale Hilfe (englisch)
  • Beispiele – zu allen erwähnten Syntaxkonstrukten
  1. Intl.Collator liefert abhängig von der Sprache (auf unseren Seiten: Deutsch) eine geeignete Alphabetische Sortierung gemäß dem Standard-Regelwerk dieser Sprache. mozilla.org