========================
Expression: xpointer(//chapter[position() = 2]/range-to(following::chapter[1]))
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[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=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[1]))
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