壊れたのをちまちま直すよりは新しいのを書き直したのが早かろうと思ったので書き直した。ただ書き直すだけでは何なので、ちょっと新機能を盛り込んでみた。使い勝手が良いのかどうかは不明。
今回の話に直接関係ない XSL ファイルも1個書き換えた。日記から特定の要素を抜き出して索引チックに表示する試みに深く関与している index_list.xsl 。
- Before
<xsl:variable name="a" select="item[starts-with(@ruby,'あ')] | item[starts-with(@ruby,'い')] | item[starts-with(@ruby,'う')] | item[starts-with(@ruby,'え')] | item[starts-with(@ruby,'お')]" /> <xsl:variable name="ka" select="item[starts-with(@ruby,'か')] | item[starts-with(@ruby,'き')] | item[starts-with(@ruby,'く')] | item[starts-with(@ruby,'け')] | item[starts-with(@ruby,'こ')] | item[starts-with(@ruby,'が')] | item[starts-with(@ruby,'ぎ')] | item[starts-with(@ruby,'ぐ')] | item[starts-with(@ruby,'げ')] | item[starts-with(@ruby,'ご')]" /> <!--(中略)--> <xsl:variable name="n" select="item[starts-with(@ruby,'ん')]" />- After
<xsl:variable name="a" select="item[contains('あいうえお',substring(@ruby,1,1))]" /> <xsl:variable name="ka" select="item[contains('かきくけこがぎぐげご',substring(@ruby,1,1))]" /> <!--(中略)--> <xsl:variable name="n" select="item[contains('ん',substring(@ruby,1,1))]" />
つまり変更前は、ルビの先頭の文字が「あ」か「い」か「う」か「え」か「お」かといちいち判定していたのだけれども、変更後は「あいうえお」のどれかがルビの1文字目か否かを判断するようにした。これでかなりすっきりしたので満足。ともあれこれで3月からの気掛かりが消えた。