我需要语法帮助
从CMS我得到一些标题信息(音乐,电视,喜剧)现在我需要在xsl中运行检查以查看哪一个出现然后呈现相应的内容(在我的情况下是一组复选框)
基于Title出现的内容,我想呈现不同的XSL代码。如果Title = TV则显示此XSL,否则如果Title = Music则呈现此XSL。
这是我的代码到目前为止,但它是抛出错误,因为我在XSL if语句中有一个XSL when语句。
<xsl:template name="PrintTitles">
<xsl:param name="ids"/>
<xsl:if test="$ids">
<xsl:variable name="itm_id" select="substring-before($ids, '|')"/>
<!-- xsl:if -->
<xsl:if test="$itm_id">
<!-- Variable item & title -->
<xsl:variable name="itm" select="sc:item($itm_id,.)"/>
<xsl:variable name="title" select="sc:fld('Title', $itm)"/>
<div class="related-genre-types-{position()}" style="display:none;"><xsl:value-of select="sc:fld('Title', $itm)"/></div>
<div class="music-choices" style="display:block;">
<!-- Displays title -->
<div class="choices-title"><xsl:value-of select="sc:fld('Title', $itm)"/></div>
<div class="choices-checkboxes">
<!-- where I try to use the 'when conditional' throws error because this is inside of <xsl:if test="$itm_id">-->
<!-- if title = TV then render this -->
<xsl:when test="title = TV">
<xsl:for-each select="$TVGenres/item">
<div class="category_box">
<input type="checkbox" id="getf{sc:fld('@id',.)}" name="getfItem" value="{sc:fld('title',.)}" />
<label for="get{sc:fld('@id',.)}"><xsl:value-of select="sc:fld('title',.)" /></label>
</div>
</xsl:for-each>
</xsl:when>
<!-- if title = Music then render this -->
<xsl:when test="title = Music">
<xsl:for-each select="$MusicGenres/item">
<div class="category_box">
<input type="checkbox" id="getf{sc:fld('@id',.)}" name="getfItem" value="{sc:fld('title',.)}" />
<label for="get{sc:fld('@id',.)}"><xsl:value-of select="sc:fld('title',.)" /></label>
</div>
</xsl:for-each>
</xsl:when>
<!-- if title = Comedy then render this -->
<xsl:when test="title = Comedy">
<xsl:for-each select="$ComedyGenres/item">
<div class="category_box">
<input type="checkbox" id="getf{sc:fld('@id',.)}" name="getfItem" value="{sc:fld('title',.)}" />
<label for="get{sc:fld('@id',.)}"><xsl:value-of select="sc:fld('title',.)" /></label>
</div>
</xsl:for-each>
</xsl:when>
</div>
<div class="clearfix"></div>
</div>
</xsl:if>
<xsl:call-template name="PrintTitles">
<xsl:with-param name="ids" select="substring-after($ids, '|')"/>
</xsl:call-template>
</xsl:if>
谢谢你看看!
答案 0 :(得分:0)
<xsl:when>
必须位于<xsl:choose>
:
<xsl:choose>
<xsl:when test="...">
...
</xsl:when>
<xsl:when test="...">
...
</xsl:when>
...
</xsl:choose>
此外,如果要检查title = Music
元素是否具有“音乐”等值,则title = 'Music'
之类的条件语句实际应为title
。