ナビゲーションにXSLTを使用できるCMSを使用しています。デザインは、3つの異なるレベルで、それぞれに多少異なるマークアップを使用してナビゲーションを指示します。楽観的な開発者は、「汗を流さない」と述べ、「XSLTと一緒にハックするだけだ。つまり、どれほど難しいのだろうか」と語った。これが私の最初の間違いでした。
追いかけましょう:
XSLT
<xsl:template match="/NavigationTree">
<xsl:if test="count(//Page) > 0">
<ul class="floatLeft">
<xsl:apply-templates select="Page">
<xsl:with-param name="depth" select="1"/>
</xsl:apply-templates>
</ul>
</xsl:if>
</xsl:template>
<xsl:template match="//Page">
<xsl:param name="depth"/>
<li>
<xsl:if test="count(Page)">
<ul>
<xsl:apply-templates select="Subpage">
<xsl:with-param name="depth" select="$depth+1"/>
</xsl:apply-templates>
</ul>
</xsl:if>
</li>
</xsl:template>
<xsl:template match="//Subpage">
<xsl:param name="depth"/>
<li class="test">
</li>
</xsl:template>
私の考えでは、最初のレベルでは「ページ」テンプレートを使用し、そのすべてのサブページでは「サブページ」テンプレートを使用する必要があります。代わりに、最初のレベルの2番目以降のすべてのアイテムは、「サブページ」テンプレートを使用します。そのテンプレートを削除すると、最初のレベル全体が正しく表示されますが、サブレベルは表示されません。私の知識のない推測では、ページテンプレート内のifステートメントに何か問題があります。
それは理にかなっていますか?
私は母国語よりもHTMLをよく知っていますが、XSLTに関しては新人です。何を探すべきかさえわからなかったので、この問題がどこかでカバーされているのなら、私を強力な賢者に導いてください。