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 ...
Get XML in a Nutshell, 3rd Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.