我目前正在对一个 Magento 生成的 XML 文件进行排序,如下所示:
<products>
<product>
<productnaam>Example item 1</productnaam>
<populariteit>27845</populariteit>
<imagelink>http://www.example.com/image1.jpg</imagelink>
</product>
<product>
<productnaam>Example item 2</productnaam>
<populariteit>12687</populariteit>
<imagelink>http://www.example.com/image1.jpg</imagelink>
</product>
<product>
<productnaam>Example item 3</productnaam>
<populariteit>32574</populariteit>
<imagelink>http://www.example.com/media/catalog/productno_selection</imagelink>
</product>
<products>
使用以下 XSL 块:
<xsl:template match="/">
<xsl:apply-templates select="/products/product">
<xsl:sort select="populariteit" order="ascending" data-type="number"/>
</xsl:apply-templates>
</xsl:template>
它按受欢迎程度(我的 XML 中的“populariteit”)对项目进行排序,并使用以下代码块从列表中取出第一个项目,因此它将显示最受欢迎的项目。
<xsl:template match="product">
<xsl:if test="position()=1">
<xsl:value-of select="productnaam"/>
<img>
<xsl:attribute name="src">
<xsl:value-of select='imagelink'/>
</xsl:attribute>
</img>
</xsl:if>
</xsl:template>
然而,问题是有时没有有效的图片,在这种情况下,-<imagelink>
属性总是:
<imagelink>http://www.example.com/media/catalog/productno_selection</imagelink>
我想要的是对列表进行排序,就像我现在做的那样,但它应该跳过所有<imagelink>
等于上面显示的项目。
我试过这样的事情:
<xsl:sort select="populariteit" order="ascending" data-type="number" test="not(imagelink = 'http://www.fietspunt.nl/media/catalog/productno_selection')">
但这似乎不起作用。
在上面的例子中,'Example item 3' 是最受欢迎的,但是,由于它有一个错误的<imagelink>
- 属性,'Example item 1' 是需要显示的。
我需要对我的排序代码块进行哪些更改才能使其正常工作?