The string-range( ) Function
The string-range()
function is unusual. Rather than operating on a
location set—including various tags, comments, processing
instructions, and so forth—it operates on the text of a document
after all markup has been stripped from it. Tags are more or less
ignored.
The string-range( )
function takes as arguments an XPath expression identifying
locations and a substring to try to match against the XPath string
value of each of those locations. It returns one range for each
non-overlapping match, exactly covering the matched string. Matches
are case sensitive. For example, this XPointer produces ranges for
all occurrences of the word “Wizard” in title elements in the document:
xpointer(string-range(//title, "Wizard"))
If there are multiple matches, then multiple ranges are returned. For example, this XPointer returns two ranges when applied to Example 11-1, one covering the W in “Wonderful” and one covering the W in “Wizard”:
xpointer(string-range(//title, "W"))
You can also specify an offset and a length to the function so
that strings start a certain number of characters from the beginning
of the match and continue for a specified number of characters. The
point before the first character in the string to search is 1. For
example, this XPointer selects the first four characters after the
word “Wizard” in title
elements:
xpointer(string-range(//title, "Wizard", 7, 4))
Nonpositive indices work backward in the document before the beginning of the match. For ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access