tf:highlight

Highlight text based on reference descriptions.

Top of page

Related Syntax Constructs

The following construct(s) refer to this construct:


Syntax

tf:highlight(node $node, node $description, string $markerString) => node*

Description

The function tf:highlight is specific to Tamino. It takes a sequence of nodes, a sequence of reference descriptions and a marker string as arguments and returns $node along with any text or nodes, for which a reference description has been created, as enclosed between processing instructions (PIs).

The PIs are used to mark the highlighted text. They have the following format: The PI target is always $markerString. It is followed by either "+" or "-", indicating start and end of the highlighted token. The subsequent number is the current number of highlights in the result document.

If $markerString is empty, the string "Tamino-Highlighting" is used.

Arguments

$node

node in which the search takes place

$description

a reference description

$markerString

a string value

Examples

In the patient sample data, there is a remarks element for the patient Bloggs that reads: "Patient is responding to treatment. Dr. Shamir.". This remark should serve as example text here.

  • Highlight book reviews using the word "discussion":

    for $a in input()/reviews/entry
    let $ref := tf:createTextReference($a/review, "discussion")
    return tf:highlight($a, $ref, "REV_DISC")

    This is the resulting document:

    <entry>
      <title>Data on the Web</title>
      <price>34.95</price>
      <review>A very good <?REV_DISC + 1 ?>discussion<?REV_DISC - 1 ?> of semi-structured database systems and XML.</review>
    </entry>
    <entry>
      <title>Advanced Programming in the Unix environment</title>
      <price>65.95</price>
      <review>A clear and detailed <?REV_DISC + 2 ?>discussion<?REV_DISC - 2 ?> of UNIX programming.</review>
    </entry>
    <entry>
      <title>TCP/IP Illustrated</title>
      <price>65.95</price>
      <review>One of the best books on TCP/IP.</review>
    </entry>

    Note that all entry nodes are returned, although only for the first two carry highlighted text. If only nodes with highlighted text should be returned, simply add a where clause checking the Boolean return value of the reference creator function:

    for $a in input()/reviews/entry
    let $ref := tf:createTextReference($a/review, "discussion")
    where $ref
    return tf:highlight($a, $ref, "REV_DISC")