Syntax
npsobj_list ::=
<npsobj list = "name"
[ sortkey1 = "sortKey1"
[ sortmodifier1 = sortModifier ]
[ sortkey2 = "sortKey2"
[ sortmodifier2 = sortModifier ]
[ sortkey3 = "sortKey3"
[ sortmodifier3 = sortModifier ]]]]
[ start = "startIndex" ]
[ ( length = "length" ) | ( end = "end" ) ]
[ reverse = "" ] >
content
</npsobj>
sortModifier ::=
"alpha" |
"numeric" |
"ascending" |
"descending" |
"alpha ascending" |
"alpha descending" |
"numeric ascending" |
"numeric descending"
Aufgabe
Die Anweisung wird häufig verwendet, um
Inhaltsübersichten automatisch zu generieren. Sie erzeugt
eine Liste von Datei- oder Linkkontexten, indem
name ausgewertet wird.
name steht hierbei für einen
Bezeichner, der eine Kontextliste ergibt, beispielsweise
toclist oder children. Als
name kann auch der Name eines
Linklistenfeldes oder einer Exportvariablen angegeben
werden, der vorher eine Kontextliste zugewiesen wurde.
Für jedes Element in der Liste wird
content genau einmal ausgewertet
(siehe jedoch auch
npsobj_break). Für die
Auswertung von content
wird der aktuelle Kontext temporär auf das jeweilige Listenelement
gesetzt. Dadurch beziehen sich sämtliche Namen
(beispielsweise Feldnamen) auf das aktuelle Listenelement,
solange der Kontext innerhalb von
content nicht gewechselt wird.
Sortierung der Liste
Die Kontextliste kann sortiert werden, indem die Werte
sortKey1 der Kontexte verglichen werden. Sind zwei Werte
gleich, so werden die Werte von sortKey2 herangezogen. Sind
auch diese Werte gleich, wird die Reihenfolge der Kontexte anhand von
sortKey3 bestimmt. Die Reihenfolge von Kontexten, bei denen
alle drei Sortierschlüssel jeweils denselben Wert haben, ist nicht
definiert. Ist sortkey1 nicht angegeben, so wird die
Kontextliste nach den Sortierschlüsseln sortiert, die für den darüber
liegenden Ordner angegeben wurden.
Mit dem Modifikator sortModifier kann man angeben, wie
die Werte zweier Sortierschlüssel miteinander verglichen werden sollen.
alpha sortiert nach Zeichenwert, numeric
numerisch, d. h. die Zeichenfolge wird als Zahl interpretiert.
ascending sortiert aufsteigend, descending
absteigend. Jeweils ein Schlüsselwort der beiden Modifikatorpaare
(alpha/numeric und
ascending/descending) kann miteinander
kombiniert werden (Beispiel: numeric descending). Der
voreingestellte Sortiermodus ist alpha, die voreingestellte
Sortierrichtung ascending. Die voreingestellte
Modifikatorkombination ist also alpha ascending.
Auswahl von Listenelementen
Ist das Attribut start angegeben und hat
startIndex einen Wert größer 0, so
ist startIndex der Index des ersten
zu berücksichtigenden Elements der Kontextliste. Das erste
Element hat den Index 1. Hat
startIndex einen Wert kleiner 0, so
wird das erste zu berücksichtigende Element vom Ende der
Kontextliste her ermittelt. Ist start
gleich 0, so wird das Attribut ignoriert.
Mit dem Wert des Attributs length kann die
Anzahl der Elemente in der Kontextliste festgelegt werden.
Ist length gleich 0 (Voreinstellung), so
werden die Elemente ab start bis zum Ende der
Liste zurückgegeben. Dagegen bestimmt ein Wert größer 0 die
maximale Anzahl der ab start zu liefernden
Elemente. Ist length kleiner als 0, so
bezeichnet start das letzte Element der Liste,
die höchstens soviele Elemente hat, wie es der Absolutwert
von length festlegt. Mit
start="-1" und length="-2" erhält
man also das vorletzte und das letzte Element der Liste.
Alternativ zu length kann das Attribut
end angegeben werden. Ist
end eine positive Zahl, so bezeichnet
diese Zahl den Index des letzten zu berücksichtigenden
Elements der ursprünglichen Liste. Das erste Element hat
den Index 1. Ist end negativ, so
werden vom Ende der Liste her so viele Elemente ausgespart
wie der Absolutwert von end
angibt.
Die Wirkung von start und
length bzw. end zeigt die
folgende Übersicht. Das durch start gewählte
Element ist grün gefärbt.
| Ausgewählte Elemente | start | length | end |
|---|---|---|---|
![]() |
|||
![]() |
3 | 2 | |
![]() |
5 | -2 | |
![]() |
-3 | 2 | |
![]() |
-1 | -3 | |
![]() |
3 | 5 | |
![]() |
2 | -2 | |
![]() |
-3 | 5 | |
![]() |
-4 | -1 |
Legende:
Nicht ausgewähltes Element
Erstes ausgewähltes Element
Weiteres ausgewähltes Element
Ist das Attribut reverse angegeben, so wird die Reihenfolge
der Elemente umgekehrt, nachdem sie gegebenenfalls sortiert wurden und bevor
diese mit start und length bzw. end
gekürzt werden.
Beispiel
<npsobj list="toclist" start="2" length="3" sortkey1="title" sortmodifier1="ascending">
<!-- Dies wird für jedes Listenelement abgearbeitet -->
<npsobj insertvalue="anchor" name="self">
<npsobj insertvalue="var" name="title" /><br />
</npsobj>
</npsobj>








