私のxsltテンプレートには、for-each
ステートメントがあります。その中でfor-each
私はさまざまな条件を作っています。に割り当てられるクラス属性を含む文字列型の変数が必要です<li>
。
私はxsltを初めて使用するので、いくつかの例を教えてください。または、やりたいことをどのように達成できますか。
これが私のコードの一部ですので、私が何をしているのかを見ることができます:
<xsl:if test="count($currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']) > '0'">
<xsl:for-each select="$currentPage/ancestor-or-self::* [@level=$level]/* [@isDoc and string(umbracoNaviHide) != '1']">
<li><xsl:attribute name="class">
topNavigLi
page<xsl:number value="position()" format="1" />
<xsl:if test="@nodeName='Network' ">
has_submenu network
</xsl:if>
</xsl:attribute>
<xsl:if test="@id = $currentPage/@id">
<xsl:attribute name="class">
current topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="position() = last()">
<xsl:attribute name="class">
last topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
<xsl:if test="@id = $currentPage/@id and position() = last()">
<xsl:attribute name="class">
current last topNavigLi
page<xsl:number value="position()" format="1" />
</xsl:attribute>
</xsl:if>
変数を持っていて、テストを行っているときにそれに連結するよりもはるかにエレガントです。私はこのように試しましたが、何も返しません。
<xsl:variable name="li_class" select="page"> </xsl:variable>
<xsl:attribute name="class">
<xsl:value-of select="li_class" />
</xsl:attribute>