Filter (SP-Tag): Unterschied zwischen den Versionen

Aus SiteparkWiki
Zur Navigation springen Zur Suche springen
K (hat „Sp:filter“ nach „Filter (SP-Tag)“ verschoben)
 
(12 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
==Name==
 
==Name==
<sp:filter> - xxx-Tag
+
<sp:filter> - Filtert Elemente aus einer Liste.
  
 
==Syntax==
 
==Syntax==
 
<source lang="xml">
 
<source lang="xml">
<sp:xxx name="variable" encoding="html"/>
+
<sp:filter name="filteredList" collection="listToFilter" attribute="name" filter="*Example*" ic="true"/>
</source>  
+
</source>
  
 
==Beschreibung==
 
==Beschreibung==
xxx
+
Mit diesem Tag können Listen gefiltert werden um beispielsweise Listen-Elemente nach bestimmten Kriterien aus der Liste zu entfernen. Es gibt drei Arten von Filtern: Einen einfachen Wildcard-Filter, der * und ? unterstützt, einen Filter aus regulären Ausdrücken für komplexe Anforderungen sowie einen Bereichsfilter.
  
 
==Attribute==
 
==Attribute==
{| class="prettytable"
+
{| class="prettytable sortable"
 
|- class="hintergrundfarbe1"
 
|- class="hintergrundfarbe1"
 
! Name || Type || Required || Default || ab IES Version
 
! Name || Type || Required || Default || ab IES Version
 
|-
 
|-
| <code>xxx</code>
+
| <code>name</code>
| [[Attribute]]
+
| [[Variable]]
 +
| Ja
 +
| None
 +
| 1
 +
|-
 +
| <code>collection</code>
 +
| [[Collection]]
 
| Ja
 
| Ja
 
| None
 
| None
 
| 1
 
| 1
 
|-
 
|-
| <code>xxx</code>
+
| <code>attribute</code>
 +
| [[Text]]
 +
| Nein
 +
| das Element selbst
 +
| 1
 +
|-
 +
| <code>filter</code>
 +
| [[Text]] / [[Regular-Expression]]
 +
| Nein
 +
| None
 +
| 1
 +
|-
 +
| <code>ic</code>
 +
| [[Condition]]
 +
| Nein
 +
| <code>false</code>
 +
| 1
 +
|-
 +
| <code>invert</code>
 +
| [[Condition]]
 +
| Nein
 +
| <code>false</code>
 +
| 1
 +
|-
 +
| <code>mode</code>
 +
| [[Text]]
 +
| Nein
 +
| <code>simple</code>
 +
| 1
 +
|-
 +
| <code>locale</code>
 +
| [[Locale]]
 +
| Nein
 +
| None
 +
| 1
 +
|-
 +
| <code>from</code>
 
| [[Text]]
 
| [[Text]]
 
| Nein
 
| Nein
Zeile 27: Zeile 69:
 
| 1
 
| 1
 
|-
 
|-
| <code>xxx</code>
+
| <code>to</code>
| [[Expression]]
+
| [[Text]]
 
| Nein
 
| Nein
 
| None
 
| None
 
| 1
 
| 1
 
|-
 
|-
| <code>xxx</code>
+
| <code>type</code>
| [[Locale]]
+
| [[Text]]
 +
| Nein
 +
| None
 +
| 1
 +
|-
 +
| <code>format</code>
 +
| [[Text]]
 
| Nein
 
| Nein
 
| None
 
| None
 
| 1
 
| 1
 +
|-
 +
| <code>scope</code>
 +
| [[Text]]
 +
| Nein
 +
| None => RequestScope
 +
| 2.13
 
|}
 
|}
  
;<code>xxx</code>
+
;<code>name</code>
:xxx.
+
:Name der gefilterten Liste.
 +
 
 +
;<code>collection</code>
 +
:Name der zu filternden Liste.
 +
 
 +
;<code>attribute</code>
 +
:Attribut, auf das der Filter angewendet werden soll.
 +
 
 +
;<code>filter</code>
 +
:Die Filterdefinition für die Filtertypen Wildcard und regulärer Ausdruck. Der mit dem Attribut <code>mode</code> angegebene Modus wird verwendet. Ohne Angabe eines Modus wird <code>simple</code> verwendet.
 +
 
 +
;<code>ic</code>
 +
:Ist Ignore-Case auf <code>true</code> gesetzt, wird eine Groß- und Kleinschreibung nicht berücksichtigt. Dieses Attribut gilt nur für die Filtertypen Wildcard und regulärer Ausdruck.
 +
 
 +
;<code>invert</code>
 +
:Invertiert die Logik des Filters. Alle Elemente die normalerweise herausgefiltert würden, bilden die Filterergebnisse.
 +
 
 +
;<code>mode</code>
 +
:Auswahl des Filter-Mechanismus.
 +
:;simple (Wildcard-Filter)
 +
::Der Filter kann die Wildcards * für beliebige Zeichen und ? für ein beliebiges Zeichen enthalten. So würde eine wie folgt gefilterte Liste nur Elemente enthalten, die mit a beginnen.
 +
::<source lang="text">
 +
a*
 +
</source>
 +
:;regex (Reguläre Ausdrücke)
 +
::Für komplexe Filter stehen [[Regular-Expression|Reguläre Ausdrücke]] (POSIX) zur Verfügung. So würde im regex-Filtermode eine mit
 +
::<source lang="text">
 +
[a-dA-D].*
 +
</source>
 +
gefilterte Liste nur Elemente enthalten, die mit dem Buchstaben A, a, B, b, C, c, d oder D beginnen.
 +
 
 +
;<code>locale</code>
 +
:Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
 +
 
 +
;<code>from</code>
 +
:Der Wert für den Beginn eines Bereiches, z.B. "Aa" oder "100". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut type angegeben werden.
 +
 
 +
;<code>to</code>
 +
:Der Wert für das Ende eines Bereiches, z.B. "Zz" oder "999". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut <code>type</code> angegeben werden.
 +
 
 +
;<code>type</code>
 +
:Der Typ für die <code>from</code> und <code>to</code> Attribute: <code>number</code>, <code>text</code>, <code>date</code>.
 +
:;number
 +
::Das Element oder Attribut wird als Zahl interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Zahlenbereiches liegt, der mit <code>from</code> und <code>to</code> definiert wurde.
 +
:;text
 +
::Das Element oder Attribut wird als Text interpretiert. Es wird nicht herausgefiltert wenn der Text mit den Zeichen beginnt, die in dem mit <code>from</code> und <code>to</code> definierten Bereich liegen.
 +
:;date
 +
::Das Element oder Attribut wird als Datum interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Datumbereiches liegt, der mit <code>from</code> und <code>to</code> definiert wurde.
 +
;<code>format</code>
 +
:Das Format des Datums, wenn die <code>from</code> und <code>to</code> Werte als Datum interpretiert werden sollen.
 +
;<code>scope</code>
 +
:Gültigkeitsbereich, in dem die Variable definiert ist. Möglich sind: <code>page|request|session</code>.
  
;<code>xxx</code>
 
:xxx.
 
  
 
==Beispiele==
 
==Beispiele==
  
====Beispiel A====
+
===Filtern einer Liste===
  
 
Template Quelltext
 
Template Quelltext
 
<source lang="xml">
 
<source lang="xml">
xxx
+
<%-- zu filternde Liste erzeugen --%>
</source>
+
<sp:collection name="names" action="add" value="Christian"/>
 +
<sp:collection name="names" action="add" value="Karsten"/>
 +
<sp:collection name="names" action="add" value="Gaby"/>
 +
<sp:collection name="names" action="add" value="Markus"/>
 +
<sp:collection name="names" action="add" value="Tina"/>
 +
<sp:collection name="names" action="add" value="Marion"/>
 +
<sp:collection name="names" action="add" value="Jörg"/>
  
Ausgabe
+
<%-- Einfacher Filter --%>
<source lang="text">
+
Liste filtern (Filter ?ar* - simple-mode):<br>
xxx
+
<sp:filter name="filteredList" collection="names" filter="?ar*" mode="simple"/>
</source>
+
<sp:loop collection="filteredList" item="it">
 +
  <sp:print name="it"/><br>
 +
</sp:loop>
  
====Beispiel B====
+
<br>
  
Template Quelltext
+
<%-- Filter mit regulärem Ausdruck --%>
<source lang="xml">
+
Liste filtern (Filter [a-lA-L].* - regex-mode):<br>
xxx
+
<sp:filter name="filteredList" collection="names" filter="[a-lA-L].*" mode="regex"/>
 +
<sp:loop collection="filteredList" item="it">
 +
  <sp:print name="it"/><br>
 +
</sp:loop>
 
</source>
 
</source>
  
 
Ausgabe
 
Ausgabe
 
<source lang="text">
 
<source lang="text">
xxx
+
Liste filtern (Filter ?ar* - simple-mode):
 +
Karsten
 +
Markus
 +
Marion
 +
 
 +
Liste filtern (Filter [a-lA-L].* - regex-mode):
 +
Christian
 +
Karsten
 +
Gaby
 +
Jörg
 
</source>
 
</source>
  
<!--
+
 
bitte die passenden Kategorien auswählen und Kommentar entfernen
 
--------------------------------------------------------------
 
 
<noinclude>
 
<noinclude>
 
[[Category:SP-Tags]]
 
[[Category:SP-Tags]]
[[Category:SPT-Tags]]
 
[[Category:Qualität_des_Inhalts_prüfen]]
 
[[Category:Qualität_der_Sprache_prüfen]]
 
 
[[Category:Qualität_des_Codes_prüfen]]
 
[[Category:Qualität_des_Codes_prüfen]]
 +
[[Category:Beispiel_überarbeiten_testen]]
 
</noinclude>
 
</noinclude>
-->
 

Aktuelle Version vom 7. Oktober 2015, 09:31 Uhr

Name

<sp:filter> - Filtert Elemente aus einer Liste.

Syntax

<sp:filter name="filteredList" collection="listToFilter" attribute="name" filter="*Example*" ic="true"/>

Beschreibung

Mit diesem Tag können Listen gefiltert werden um beispielsweise Listen-Elemente nach bestimmten Kriterien aus der Liste zu entfernen. Es gibt drei Arten von Filtern: Einen einfachen Wildcard-Filter, der * und ? unterstützt, einen Filter aus regulären Ausdrücken für komplexe Anforderungen sowie einen Bereichsfilter.

Attribute

Name Type Required Default ab IES Version
name Variable Ja None 1
collection Collection Ja None 1
attribute Text Nein das Element selbst 1
filter Text / Regular-Expression Nein None 1
ic Condition Nein false 1
invert Condition Nein false 1
mode Text Nein simple 1
locale Locale Nein None 1
from Text Nein None 1
to Text Nein None 1
type Text Nein None 1
format Text Nein None 1
scope Text Nein None => RequestScope 2.13
name
Name der gefilterten Liste.
collection
Name der zu filternden Liste.
attribute
Attribut, auf das der Filter angewendet werden soll.
filter
Die Filterdefinition für die Filtertypen Wildcard und regulärer Ausdruck. Der mit dem Attribut mode angegebene Modus wird verwendet. Ohne Angabe eines Modus wird simple verwendet.
ic
Ist Ignore-Case auf true gesetzt, wird eine Groß- und Kleinschreibung nicht berücksichtigt. Dieses Attribut gilt nur für die Filtertypen Wildcard und regulärer Ausdruck.
invert
Invertiert die Logik des Filters. Alle Elemente die normalerweise herausgefiltert würden, bilden die Filterergebnisse.
mode
Auswahl des Filter-Mechanismus.
simple (Wildcard-Filter)
Der Filter kann die Wildcards * für beliebige Zeichen und ? für ein beliebiges Zeichen enthalten. So würde eine wie folgt gefilterte Liste nur Elemente enthalten, die mit a beginnen.
a*
regex (Reguläre Ausdrücke)
Für komplexe Filter stehen Reguläre Ausdrücke (POSIX) zur Verfügung. So würde im regex-Filtermode eine mit
[a-dA-D].*

gefilterte Liste nur Elemente enthalten, die mit dem Buchstaben A, a, B, b, C, c, d oder D beginnen.

locale
Dieses Attribut dient zur Auswahl der zu verwendenden Sprache bei mehrsprachigen Variablen.
from
Der Wert für den Beginn eines Bereiches, z.B. "Aa" oder "100". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut type angegeben werden.
to
Der Wert für das Ende eines Bereiches, z.B. "Zz" oder "999". Ob der Wert als Text, Zahl oder Datum interpretiert wird, kann mit dem Attribut type angegeben werden.
type
Der Typ für die from und to Attribute: number, text, date.
number
Das Element oder Attribut wird als Zahl interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Zahlenbereiches liegt, der mit from und to definiert wurde.
text
Das Element oder Attribut wird als Text interpretiert. Es wird nicht herausgefiltert wenn der Text mit den Zeichen beginnt, die in dem mit from und to definierten Bereich liegen.
date
Das Element oder Attribut wird als Datum interpretiert. Es wird nicht herausgefiltert wenn es innerhalb des Datumbereiches liegt, der mit from und to definiert wurde.
format
Das Format des Datums, wenn die from und to Werte als Datum interpretiert werden sollen.
scope
Gültigkeitsbereich, in dem die Variable definiert ist. Möglich sind: page|request|session.


Beispiele

Filtern einer Liste

Template Quelltext

<%-- zu filternde Liste erzeugen --%>
<sp:collection name="names" action="add" value="Christian"/>
<sp:collection name="names" action="add" value="Karsten"/>
<sp:collection name="names" action="add" value="Gaby"/>
<sp:collection name="names" action="add" value="Markus"/>
<sp:collection name="names" action="add" value="Tina"/>
<sp:collection name="names" action="add" value="Marion"/>
<sp:collection name="names" action="add" value="Jörg"/>

<%-- Einfacher Filter --%>
Liste filtern (Filter ?ar* - simple-mode):<br>
<sp:filter name="filteredList" collection="names" filter="?ar*" mode="simple"/>
<sp:loop collection="filteredList" item="it">
  <sp:print name="it"/><br>
</sp:loop>

<br>

<%-- Filter mit regulärem Ausdruck --%>
Liste filtern (Filter [a-lA-L].* - regex-mode):<br>
<sp:filter name="filteredList" collection="names" filter="[a-lA-L].*" mode="regex"/>
<sp:loop collection="filteredList" item="it">
  <sp:print name="it"/><br>
</sp:loop>

Ausgabe

Liste filtern (Filter ?ar* - simple-mode):
Karsten
Markus
Marion

Liste filtern (Filter [a-lA-L].* - regex-mode):
Christian
Karsten
Gaby
Jörg