我正在排序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')">
但这似乎不起作用。
在上面的示例中,“示例项目3”是最受欢迎的,但由于它具有错误的<imagelink>
- 属性,因此“示例项目1”是需要显示的项目。
我需要对我的排序代码块进行哪些更改才能使其正常工作?
答案 0 :(得分:2)
使用:
<xsl:apply-templates select=
"/products/product
[not(imagelink
=
'http://www.fietspunt.nl/media/catalog/productno_selection'
)
]">
<xsl:sort select="populariteit" order="ascending" data-type="number"/>
</xsl:apply-templates>