Der Inhalt des query-Tags enthält den Suchausdruck, über welchen die Kollektion gesammelt wird. Die Abfragesprache, in welcher der Suchausdruck formuliert wurde, wird als type-Attribut angegeben. Die verfügbaren Abfragesprachen sind vom verwendeten Datenbanktypen abhängig.
Normalerweise wird <tml:query> innerhalb eines Tags <tml:collection> verwendet, an welchen der tml:query-Tag sein Ergebnis automatisch weiterreicht. Pro tml:collection-Tag können mehrere tml:query-Tags angegeben werden.
Wird der tml:query-Tag ausserhalb von <tml:collection> verwendet, so kann per Kontextausdruck "query:tagid" auf das erste Ergebnisdokument des tml:query-Tags zugegriffen werden. Diese Technik kann angewandt werden, wenn lediglich das erste Ergebnisdokument von Interesse ist. Desweiteren kann der tml:query-Tag per return-Attribut direkt ein Item des ersten Ergebnisdokumentes ausgeben ohne dass <tml:collection> involviert ist.
error: Enthält ein Java-Exception-Objekt, wenn in der Abfrage ein Fehler aufgetreten ist. Tritt keine Fehler auf ist diese Taginfo null. Hiermit kann eine Webseite auf eine fehlgeschlagene Abfrage reagieren, indem sie dieses Taginfo abfragt, z.B.:
<tml:case condition="taginfo('querytag', 'error') != null">
fullquery: Die im Endeffekt ausgeführte Abfrage nach impliziten Additionen und Modifikationen,
unspecificquery: Diese Tag-Info ist nur beim Querytype "Lucene" verfügbar. Mögliche Werte sind "true" oder "false". Unspecificquery wird auf "true" gesetzt, wenn eine zu ungenaue Lucene-Abfrage durchgeführt worden ist. Z.B. sucht ein Benutzer nach allen Begriffen die mit "a" beginnen über die Abfrage "a*". Solche Abfrage sind sehr Rechenzeitaufwändig. Aus diesem Grund ist die maximale Anzahl an Kombinationen für einen Suchbegriff standardmäßig auf 1024 begrenzt. Eine Abfrage mit "a*" ist also nur dann möglich, wenn der Index nicht mehr als 1024 verschiedene Begriffe enthält, die mit "a" beginnen. Sollte es dennoch gewünscht sein, dass Benutzer sehr ungenaue Suchbegriffe verwenden können, ist je nach Indexgröße der Parameter für die maximale Anzahl an Kombinationen entsprechend zu erhöhen. Näheres hierzu entnehmen sie bitte dem Kapitel "Lucene Volltextindizierung" im Administrationshandbuch.
Der normale Aufbau einer Abfrage mit einem tml:query-Tag innerhalb von <tml:collection>:
<tml:collection>
<tml:query id="adressen">
</tml:query>
<tml:forach>
<li><tml:item name="lastname"/></li>
</tml:foreach>
</tml:collection>
In diesem Beispiel wird <tml:query> ohne <tml:collection> verwendet. In einem folgenden tml:item-Tag wird ein Feld des ersten Ergebnisdokumentes der Abfrage ermittelt:
<tml:query id="bill" db="names" type="view">people;Bill Gates;True</tml:query>
<tml:item context="query:bill" name="phone"/>
Im folgenden Beispiel wird der tml:query-Tag dazu benutzt um lediglich ein Feld des ersten Ergebnisdokumentes auszugeben. Dazu wird das return-Attribut benutzt:
<tml:query return="Name">Select * from customers where nr = '1'</tml:query>