XSLT のデバッグしづらさよ
ネイティブコードで変換書きてえ……やはり XML ライブラリを作るしか
XSLT 1.0 で、フラットな <heading level="1〜6"> の列挙を、ネストされた <section><title>〜</title>〜</section> の木に組み直している
最初は apply-templates の select に超絶複雑な XPath 式を書いて四苦八苦していたが、 predicate 内で親コンテキストの情報を参照しづらい XPath 1.0 では限界があり、 for-each と variable で必要なコンテキストにおける式を先に計算しておいたうえで if からそれを使うという方針に切り替えたらうまくいった