Expression: xpointer(//chapter[position() = 2]/range-to(following::chapter)) Object is a Location Set: 1 : Object is a range :

From node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter2
To node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter3

Expression: xpointer(//chapter[position() <= 2]/range-to(following::chapter)) Object is a Location Set: 1 : Object is a range :

From node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter1
To node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter2

2 : Object is a range :

From node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter2
To node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter3

Expression: xpointer(//chapter[position() = last()]/range-to(following::chapter)) Object is empty (NULL)

Expression: xpointer(//chapter[position() = 3]/range-to(/.//chapter[position() = 1])) Object is a Location Set: 1 : Object is a range :

From node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter1
To node
  ELEMENT chapter
    ATTRIBUTE id
      TEXT
        content=chapter3