Files
kupshop/admin/templates/import/xmlFeed.xslt
2025-08-02 16:30:27 +02:00

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>