Ranges and string ranges
#xpointer(string-range(//text(),'prolog'))
xpointer(//prod[@num='1']/range-to(//prod[@num='22']))
XPointer can also address arbitrary ranges
Markup boundaries can be "broken" (middle of para 1 to
middle of para 2)
This example addresses everything between the two elements