XSLTで変数の値が正しく設定されない
XSLTについて詳しい方、是非、ヘルプをお願いします。
FO Plug-inの中の、トピックの末尾に「関連リンク」を生成するコードがおかしな動きをしています。「関連リンク」は、%DITA-OT%demo\fo\xsl\fo\links.xslによって生成されます。このlinks.xslの中に、以下のようなコードがあります。
<xsl:template name="buildRelationships"> : : <xsl:if test="$disableRelatedLinks = 'no'"> <xsl:variable name="parentCollectionType"> <xsl:call-template name="getCollectionType"> <xsl:with-param name="nodeType" select="'parent'"/> </xsl:call-template> </xsl:variable> <xsl:variable name="selfCollectionType"> <xsl:call-template name="getCollectionType"> <xsl:with-param name="nodeType" select="'self'"/> </xsl:call-template> </xsl:variable> </xsl:if> </xsl:template> <xsl:template name="getCollectionType"> <xsl:param name="nodeType"/> <xsl:variable name="collectionType"> <xsl:choose> <xsl:when test="$nodeType = 'parent'"> <xsl:value-of select="parent::*/@collection-type"/> </xsl:when> <xsl:when test="$nodeType = 'self'"> <xsl:value-of select="@collection-type"/> </xsl:when> </xsl:choose> </xsl:variable> <xsl:choose> <xsl:when test="$collectionType = 'unordered'"> <xsl:value-of select="'none'"/> </xsl:when> <xsl:when test="$collectionType"> <xsl:value-of select="$collectionType"/> </xsl:when> <xsl:otherwise> <xsl:value-of select="'none'"/> </xsl:otherwise> </xsl:choose> </xsl:template> : :
buildRelationshipsというテンプレートが、getCollectionTypeテンプレートを呼び出して、親要素またはカレント要素のcollection-type属性を取得しています。getCollectionTypeテンプレートのコードを見ると、このテンプレートは親要素またはカレント要素のcollection-type属性の値、または、noneの文字列を返すはずです。ところが、buildRelationshipsテンプレートのparentCollectionType変数およびselfCollectionType変数の値は、常に空文字列になってしまいます。
links.xslを調べている理由は、PDF生成時の「関連リンク」の出力を、XHTMLやHTML Helpと同様にしたいためです。リンクには、parent/childリンク、Relationship Tableによるリンク、related-linksによるリンクの3種類がありますが、現状のFO plug-inは、それらを区別せずにすべて「関連リンク」として出力します。
DITA-OTのことから離れて、DITAライティング・ガイドのことに専念しようと思っていたのですが、このことが気になってスタック状態です。
ちなみに、XSLTプロセッサにはSaxon6.5.5を使用しています。最新のXalanを使って確認してみましたが、結果は同じでした。
(;´_`;)