В настоящее время я сортирую сгенерированный 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>
Он сортирует элементы по популярности ("populariteit" в моем XML), и с помощью следующего блока кода я убираю первый элемент из списка, чтобы он отображал самый популярный элемент.
<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».
Какие изменения в моем блоке кода сортировки мне нужно внести, чтобы он заработал?