自己レス:XSLTで変数の値が正しく設定されない

原因はわかりませんが、ワークアラウンドはわかりました。

修正前
<xsl:when test="$collectionType">
修正後
<xsl:when test="string-length($collectionType)>0">

修正前のコードは、$collectionTypeの値が空文字列ならば、条件式がfalseに評価されるはずです。しかし、なぜか$collectionTypeの値が空文字列でも条件式がtrueになって、この条件式のブロックのコードが実行されます。
修正後のコードでは、$collectionTypeの文字列長をみて、文字列長が0のときにこの条件式のブロックが実行されないように変更しました。

これで少し進展したのですが、まだ正しく動作しません。どうも、collection-type属性の値が取得できていないようです。