structuring.xsl
97行目、98行目のsubstring(local-name(),2,2)substring(local-name(),2)の誤り、109行目の$limit_positionは、number($limit_position - $current_position)の誤りです。修正版をputできないよー。最悪なミスだなあ。というか、キサラギさんの構造化スタイルシートの方がパフォーマンスがいいから、ロジックをパクってしまった方が良かったかも。でも将来のXPathの進化への期待をこめ、何としても構造化する範囲をロケーションパスで表現したかった。いい訳臭いね。
また発見。107, 108行目。$followingHeadings[number(substring(local-name(),2) <= $level)]$followingHeadings[number(substring(local-name(),2)) <= $level]の誤り。前者はposition() = が省略されているものと見なされ、文法的に妥当だと見なされていた。だから省略文法は嫌いなんだ。デバッグの邪魔でしかない。
XML SQUARE−正誤表
というわけで修正されました(p.642)。isNaN関数が無いけれど、boolean(number(object)) = false() かつ number(object) != 0で非数値を見分けられる。筈。でもboolean関数が非数値について真を返してしまうと、判別が馬鹿馬鹿しいほど面倒になる。その時点でおかしいと考えてさっさと仕様を確認しに行くべきだった。