我对XSLT很陌生。我有以下代码,我确信可以更干净/干:
<xsl:choose>
<xsl:when test="custom-link">
<!-- Custom link -->
<a class="no-ajax" href="{custom-link/item/@handle}">
<img src="//images.mysite.com/2/1120/630/5{lead-image/@path}/{lead-image/filename}" alt="" />
</a>
</xsl:when>
<xsl:otherwise>
<!-- Organic link -->
<a class="no-ajax" href="/film/{primary-category/item/@handle}/{film-title/@handle}/">
<img src="//images.mysite.com/2/1120/630/5{lead-image/@path}/{lead-image/filename}" alt="" />
</a>
</xsl:otherwise>
</xsl:choose>
理想情况下,我只希望锚中的href
发生变化。我读过你可以做类似的事情:
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="custom-link">
<!-- Custom link -->
<xsl:value-of select="custom-link"/></xsl:text>
</xsl:when>
<xsl:otherwise>
<!-- Organic link -->
<xsl:value-of select="organic-link"/></xsl:text>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
</xsl:element>
但我不太清楚如何将链接值放入。
答案 0 :(得分:1)
另一种方法是使用xsl-attribute
<a class="no-ajax>
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="custom-link">
<xsl:value-of select="custom-link/item/@handle"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('/film/', primary-category/item/@handle, '/', film-title/@handle, '/')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<img src="//images.mysite.com/2/1120/630/5{lead-image/@path}/{lead-image/filename}" alt="" />
</a>
答案 1 :(得分:1)
在离开上下文的情况下评估代码非常困难。我相信以下几点:
<a class="no-ajax">
<xsl:attribute name="href">
<xsl:choose>
<xsl:when test="custom-link">
<xsl:value-of select="custom-link/item/@handle"/>
</xsl:when>
<xsl:otherwise>
<xsl:value-of select="concat('/film/', primary-category/item/@handle, '/', film-title/@handle, '/')"/>
</xsl:otherwise>
</xsl:choose>
</xsl:attribute>
<img src="//images.mysite.com/2/1120/630/5{lead-image/@path}/{lead-image/filename}" alt="" />
</a>
是您现在所拥有的简化等级 - 所以如果它能够正常工作,那么这也应该如此。但我无法测试它。