Ausschnitt aus der DTD:
<!ENTITY % cm.cm-request "
...
(obj-where+, obj-addComment) |
(obj-where+, obj-commit) |
(obj-where+, obj-copy) |
(obj-where+, obj-delete) |
(obj-where+, obj-description) |
(obj-where+, obj-edit) |
(obj-where+, obj-exportSubtree) |
(obj-where+, obj-forward) |
(obj-where+, obj-get) |
(obj-where+, obj-give) |
(obj-where+, obj-permissionGrantTo) |
(obj-where+, obj-permissionRevokeFrom) |
(obj-where+, obj-reject) |
(obj-where+, obj-release) |
(obj-where+, obj-removeActiveContents) |
(obj-where+, obj-removeArchivedContents) |
(obj-where+, obj-revert) |
(obj-where+, obj-set) |
(obj-where+, obj-sign) |
(obj-where+, obj-take) |
(obj-where+, obj-unrelease) |
...
">
<!ATTLIST obj-where
maxResults CDATA #IMPLIED
>
Definition:
<!ENTITY % cm.obj-where "
(id |
ids |
path |
parent |
condition*
">
<!ELEMENT obj-where %cm.obj-where;>
<!ELEMENT condition (%cm.atom; | %cm.listitem;)*>
<!ATTLIST condition
subject CDATA #REQUIRED
verb CDATA #REQUIRED
>
Aufgabe: obj-where ermöglicht die Suche nach Dateien, wobei die angegebenen Parameter die Trefferliste einschränken. Werden keine Parameterwerte angegeben, so wird eine Liste der IDs aller Dateien zurückgegeben. Die Höchstzahl der zu liefernden Treffer kann mit dem Tag-Attribut maxResults angegeben werden.
Spezielle Parameter dieses Funktionselements:
-
ids: der Inhalt dieses Elements ist eine Liste von Datei-IDs, bei der die einzelnen IDs durch Leerzeichen voneinander separiert sind. Alternativ kann jede ID in einem separatenlistitem-Element angegeben werden. Die Suche wird durchidsauf die Dateien mit den angegebenen IDs beschränkt. -
id: der Inhalt dieses Elements ist eine Datei-ID. Die Suche wird auf die Datei mit dieser ID beschränkt. -
condition: Mitconditionkann in Verbindung mitidseine Bedingung angegeben werden, die eine Datei erfüllen muss, um in die Ergebnisliste aufgenommen zu werden. Die Bedingung besteht aus drei Teilen, einer Eigenschaft, einem Vergleichsoperator und einem Vergleichswert, wobei die Eigenschaft und der Vergleichsoperator als die Tag-Attributesubjectundverbund der Vergleichswert als Inhalt descondition-Elements angegeben werden. Es gibt die folgenden Kombinationen dieser drei Bestandteile einer Bedingung:
Eigenschaft Operator Vergleichswert name
title
nameOrTitle
objClassis
contains
startsWithZeichenkette objTypeis
isOneOfdocument
publication
generic
image
template
Liste mit Dateitypen (s.is)stateis
isNot
isOneOfeditedListe mit Workflowzuständen (s.
committed
releasedis)Es können mehrere Bedingungen angegeben werden, die dann implizit und-verknüpft werden. Beispiel:
<obj-where maxResults="20"> <condition subject="nameOrTitle" verb="contains">foo</condition> <condition subject="objType" verb="isOneOf"> <listitem>publication</listitem> <listitem>generic</listitem> </condition> </obj-where>Wird bei
objType isOneOfoderstate isOneOfeine leere Liste angegeben, so ist die Treffermenge leer.state isNotist die einzige Negation. Diese ist erforderlich, weil Workflowzustände nicht exklusiv sind (eine Datei kann eine Arbeitsversion im Zustandeditedodercommittedsowie zusätzlich eine Version im Zustandreleasedhaben.Die
obj where-Bedingungen können auch in der Template Engine verwendet werden. Allerdings gibt es dort nur freigegebene Dateien, weshalbstatedort das Folgende liefert:state is/isOneOf...
released: die Bedingung wird ignoriert
committed/edited: die Treffermenge ist immer leerstate isNot...
released: die Treffermenge ist immer leer
committed/edited: die Bedingung wird ignoriert
Verwendung: obj-where ist ein Funktionselement, das nicht ohne ein weiteres unmittelbar darauf folgendes Funktionselement verwendet werden kann. Mit obj-where erhält man die Liste der IDs der passenden Dateien, die dem Suchkriterium entsprechen. Erst durch das folgende Funktionselement wird jedoch bestimmt, wie diese Dateien zu behandeln sind. Jedes der Elemente, die auf obj-where folgen können, entspricht dabei einer Schablone, die nacheinander auf jedes der mit obj-where ermittelten Dateien angewendet wird (siehe Requests als Schablonen und die Darstellung der Ergebnis-Daten).
Erforderliche Rechte: keine Einschränkungen.