121 lines
4.4 KiB
HTML
121 lines
4.4 KiB
HTML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:php="http://php.net/xsl">
|
|
<xsl:output indent="yes" />
|
|
|
|
<xsl:template match="/SHOP">
|
|
<SHOP>
|
|
<xsl:for-each select="SHOPITEM[not(ITEMGROUP_ID=preceding-sibling::SHOPITEM/ITEMGROUP_ID)]">
|
|
<xsl:apply-templates select="."/>
|
|
</xsl:for-each>
|
|
</SHOP>
|
|
</xsl:template>
|
|
|
|
<xsl:template match="SHOPITEM">
|
|
<SHOPITEM>
|
|
<!-- Product code -->
|
|
<xsl:variable name="code">
|
|
<xsl:if test="ITEM_ID">
|
|
<xsl:value-of select="ITEM_ID"/>
|
|
</xsl:if>
|
|
<xsl:if test="ITEMGROUP_ID">
|
|
<xsl:value-of select="ITEMGROUP_ID"/>
|
|
</xsl:if>
|
|
</xsl:variable>
|
|
<CODE>
|
|
<xsl:value-of select="$code"/>
|
|
</CODE>
|
|
<PRODUCT>
|
|
<xsl:value-of select="PRODUCTNAME"/>
|
|
</PRODUCT>
|
|
<PRODUCT_CODE>
|
|
<xsl:value-of select="$code"/>
|
|
</PRODUCT_CODE>
|
|
|
|
<!-- Product info -->
|
|
<CATEGORY>
|
|
<xsl:value-of select="translate(CATEGORYTEXT, '|', '/')"/>
|
|
</CATEGORY>
|
|
<xsl:copy-of select="PRODUCT" />
|
|
<xsl:copy-of select="DESCRIPTION" />
|
|
<xsl:copy-of select="PRICE" />
|
|
<xsl:copy-of select="VAT" />
|
|
<xsl:if test="not(PRICE)">
|
|
<xsl:variable name="vat">
|
|
<xsl:choose>
|
|
<xsl:when test="VAT">
|
|
<xsl:value-of select="number(translate(VAT, '%', ''))"/>
|
|
</xsl:when>
|
|
<xsl:otherwise>
|
|
<xsl:value-of select="number('21')"/>
|
|
</xsl:otherwise>
|
|
</xsl:choose>
|
|
</xsl:variable>
|
|
<PRICE>
|
|
<xsl:value-of select="number(translate(PRICE_VAT, ',', '.')) div ((100+$vat) div 100)"/>
|
|
</PRICE>
|
|
</xsl:if>
|
|
<xsl:copy-of select="EAN" />
|
|
<PRODUCER>
|
|
<xsl:value-of select="MANUFACTURER"/>
|
|
</PRODUCER>
|
|
|
|
<!-- Photos -->
|
|
<PHOTOS>
|
|
<xsl:if test="IMGURL">
|
|
<PHOTO>
|
|
<xsl:value-of select="IMGURL"/>
|
|
</PHOTO>
|
|
</xsl:if>
|
|
</PHOTOS>
|
|
|
|
<xsl:if test="ITEMGROUP_ID">
|
|
<!-- Variations -->
|
|
<VARIATIONS>
|
|
<xsl:variable name="variation_code" select="ITEMGROUP_ID"/>
|
|
<xsl:for-each select=".|following-sibling::SHOPITEM[ITEMGROUP_ID=$variation_code]">
|
|
<VARIATION>
|
|
<CODE>
|
|
<xsl:value-of select="$variation_code"/>
|
|
<xsl:call-template name="join">
|
|
<xsl:with-param name="list" select="PARAM/VAL/text()" />
|
|
<xsl:with-param name="separator" select="'_'" />
|
|
</xsl:call-template>
|
|
</CODE>
|
|
<xsl:for-each select="PARAM">
|
|
<LABEL>
|
|
<xsl:attribute name="name">
|
|
<xsl:value-of select="PARAM_NAME"/>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="VAL"/>
|
|
</LABEL>
|
|
</xsl:for-each>
|
|
</VARIATION>
|
|
</xsl:for-each>
|
|
</VARIATIONS>
|
|
</xsl:if>
|
|
|
|
<!-- Parameters -->
|
|
<xsl:for-each select="PARAM">
|
|
<PARAMETER>
|
|
<xsl:attribute name="name">
|
|
<xsl:value-of select="PARAM_NAME"/>
|
|
</xsl:attribute>
|
|
<xsl:value-of select="VAL"/>
|
|
</PARAMETER>
|
|
</xsl:for-each>
|
|
</SHOPITEM>
|
|
</xsl:template>
|
|
|
|
<!-- Concatenating template -->
|
|
<xsl:template name="join">
|
|
<xsl:param name="list" />
|
|
<xsl:param name="separator"/>
|
|
|
|
<xsl:for-each select="$list">
|
|
<xsl:value-of select="$separator" />
|
|
<xsl:value-of select="." />
|
|
</xsl:for-each>
|
|
</xsl:template>
|
|
|
|
</xsl:stylesheet>
|