npsobj_condition::= ( <npsobj condition = "unary_condition" data [ negate = "" ] [ separator = "separator" ] [ format = "format_name" ] > content </npsobj>) | ( <npsobj condition = "binary_condition" data1 data2 [ negate = "" ] [ separator = "separator" ] [ format = "format_name" ]> content </npsobj> ) unary_condition::= isEmpty | isNotEmpty | isNil | isNotNil binary_condition::= isEqual | isNotEqual | isGreaterThan | isLessThan | hasPrefix | hasSuffix | isCaseEqual | matches data::= ( value = "value" ) | ( name = "name" ) data1::= ( value1 = "value" ) | ( name1 = "name" ) data2::= ( value2 = "value" ) | ( name2 = "name" )
Diese Anweisung erlaubt es, den Export eines Textes davon abhängig
zu machen, dass eine Bedingung erfüllt ist. Die Bedingung wird mit
Hilfe eines Namens wie beispielsweise isEqual
als Wert des
Tag-Attributs condition
angegeben (siehe die folgende
Liste der Namen für Bedingungen); die Operanden der Bedingung werden
über weitere Attribute festgelegt.
Die Bedingung wird zunächst ausgewertet. Wenn sie erfüllt ist, wird
das gesamte NPSOBJ-Element durch content
ersetzt.
Wenn sie nicht erfüllt ist, wird das NPSOBJ-Element durch die leere
Zeichenkette ersetzt.
Ist der Parameter negate
angegeben, wird der Wert der
Bedingung, der sich entsprechend der folgenden Spezifikation der
einzelnen Werte für condition
ergibt, negiert. Dann erst
wird entschieden, ob das Element durch content
oder durch die leere Zeichenkette ersetzt wird.
Die Auswertung von data
, data1
und
data2
folgt demselben Schema. Es wird hier für
data
definiert:
Ist value="value"
angegeben, so ist der Wert
von data
die Konstante value
. Ist
value
nicht angegeben und ist
name="name"
angegeben, so ist der Wert von
data
das Ergebnis der Wertbestimmung von
name
als Zeichenkette mit dem Separator
separator
und dem Datumsformat
format_name
. Ist (fehlerhafterweise) weder das
value
- noch das name
-Attribut angegeben, ist
der Wert von data
die leere Zeichenkette. Sind
(fehlerhafterweise) value="value"
und
name="name"
angegeben, wird
name="name"
ignoriert.
Der Separator muss angegeben werden, wenn name
angegeben wurde und name
eine Liste referenziert.
Dies ist bei den Werten eines Mehrfachauswahlfeldes der Fall.
Bitte beachten Sie, dass bei binären Bedingungen name
und value
mit den Indizes 1
und
2
verwendet werden müssen. Die Indizes legen bei den
Bedingungstypen hasPrefix
, hasSuffix
,
isGreaterThan
, isLessThan
und
matches
fest auf welcher Seite des Operators sich der
jeweilige Operand befindet.
isEmpty, isNil
Die Bedingungen sind wahr, wenn der Wert von data
eine
leere Zeichenkette oder eine leere Liste ergibt oder nicht existiert.
Die beiden Bedingungen sind gleichbedeutend, isNil
ist aus
Kompatibilitätsgründen noch verfügbar.
isNotEmpty, isNotNil
Die Bedingungen sind wahr, wenn der Wert von data
existiert und eine nicht leere Zeichenkette oder eine nicht leere Liste
ergibt. Die beiden Bedingungen sind gleichbedeutend,
isNotNil
ist aus Kompatibilitätsgründen noch verfügbar.
isEqual
Die Bedingung ist genau dann wahr, wenn der Wert von
data1
zeichenweise mit dem Wert von data2
übereinstimmt.
isNotEqual
Die Bedingung ist genau dann falsch, wenn der Wert von
data1
zeichenweise mit dem Wert von data2
übereinstimmt.
isGreaterThan
Die Bedingung ist genau dann wahr, wenn der Wert von
data1
größer als der Wert von data2
ist. Die
Werte werden zeichenweise von links nach rechts miteinander verglichen.
Datumswerte werden vor dem Vergleich in ihre 14-stellige
ISO-Darstellung und Listen in Zeichenketten umgewandelt. Durch die
Negation der Bedingung kann ein Kleiner-gleich-Vergleich durchgeführt
werden.
isLessThan
Analog zu isGreaterThan
ist die Bedingung genau dann
wahr, wenn der Wert von data1
kleiner als der Wert von
data2
ist. Durch die Negation der Bedingung kann ein
Größer-gleich-Vergleich durchgeführt werden.
hasPrefix
Die Bedingung ist genau dann wahr, wenn der Anfang von
data1
zeichenweise mit data2
übereinstimmt.
hasSuffix
Die Bedingung ist genau dann wahr, wenn die Länge n von
data2
kleiner ist als die von data1
und die
letzten n Zeichen von data1
zeichenweise mit
data2
übereinstimmen.
isCaseEqual
Die Bedingung ist genau dann wahr, wenn der Wert von
data1
zeichenweise mit dem Wert von data2
übereinstimmt, wobei Groß- und Kleinschreibung nicht unterschieden
wird.
matches
Die Bedingung ist genau dann wahr, wenn der Wert von
data1
auf den regulären Ausdruck data2
passt.
Ist data2
kein gültiger regulärer Ausdruck, so ist die
Bedingung falsch. Ist data2
die leere Zeichenkette, so ist
die Bedingung wahr.
Reguläre Ausdrücke müssen der erweiterten POSIX-Syntax gehorchen. Beachten Sie bitte, dass der tatsächlich verfügbare Funktionsumfang von der POSIX-ERE-Implementation in dem verwendeten Betriebssystem abhängt. In der folgenden Aufstellung werden die Spezialsymbole und ihre Bedeutung erläutert:
[ ] |
In eckigen Klammern wird ein Bereich von Symbolen
angegeben, in dem sich das untersuchte Zeichen befinden muss, damit
der reguläre Ausdruck passt. Wenn das untersuchte Zeichen sich
nicht in dem Bereich befinden darf, so muss dem Bereich das Symbol
^ vorangestellt werden. Das Minuszeichen kann nur als
Literal verwendet werden, wenn es als erstes oder letztes Symbol
auftritt. [=-] trifft auf die Zeichen =
und - zu. Beispiele: [abc] ,
[a-z] , [^0-9] |
* |
Der * nach einer Komponente eines regulären
Ausdrucks bedeutet: kann beliebig oft vorkommen (auch gar nicht).
Beispiel: 1[a-z]*[0-9] |
. |
Der Punkt bezeichnet genau ein beliebiges Zeichen. |
^ |
Das Symbol ^ am Anfang eines Ausdrucks
bewirkt, dass die zu vergleichende Zeichenkette vom Anfang her mit
dem regulären Ausdruck übereinstimmen muss. Innerhalb eckiger
Klammern bedeutet das Symbol, dass das verglichene Zeichen nicht in
dem angegebenen Bereich enthalten sein darf. |
$ |
Das Symbol $ am Ende eines Ausdrucks
bewirkt, dass die zu vergleichende Zeichenkette vom Ende her mit
dem regulären Ausdruck übereinstimmen muss. \n
entspricht einer neuen Zeile. |
+ |
Das Pluszeichen nach einem regulären Ausdruck bedeutet
einmal oder öfter. Beispielsweise ist [0-9]+
gleichbedeutend mit [0-9][0-9]* . |
( ) |
Runde Klammern werden zur Gruppierung verwendet. Ein Operator
wie * oder + kann auf ein einzelnes
Zeichen angewendet werden oder auf einen von Klammern umschlossenen
regulären Ausdruck. Beispiel: (a*(cb+)*) . |
{ } |
Geschweifte Klammern werden zur Quantifizierung
verwendet. Nach einem Element kann mit {n} ,
{n,m} oder
{n,} verlangt verden, dass das Element
n-mal, n-mal bis m-mal bzw. wenigstens
n-mal vorkommen muss. Beispiel: [0-9]{14} |
| |
Der vertikale Strich bedeutet oder. Beispiel:
(abc|def) |
Sämtlichen oben aufgeführten Symbole muss ein umgekehrter Schrägstrich (Backslash) vorausgehen, damit sie als Literal verwendet werden können.
Im folgenden Beispiel wird in einem Link-Kontext nur dann ein Link
erzeugt, wenn die URL die Zeichenkette ://
enthält, d. h.
wenn es sich um einen externen Link handelt.
<npsobj name1="destinationUrl" value2="://" condition="matches"> <npsobj insertvalue="anchor" name="destinationUrl"> <npsobj insertvalue="var" name="displayTitle"/> </npsobj> </npsobj>