xquery version "3.1"; declare namespace tei="http://www.tei-c.org/ns/1.0"; declare variable $text :=
Chapter One
Introduction
Section 1
Subsection 1
Subsection 2
Chapter Two
Introduction
Section 1
Subsection 1
Subsection 2
; declare function local:toc($originals as node()*) { for $original in $originals return typeswitch ($original) case element(tei:text) return case element(tei:div) return
  • { local:toc($original/tei:head) } { if ($original/tei:div) then else () }
  • case element(tei:head) return $original/string() case element() return local:toc($original/node()) default return () }; local:toc($text)