Je voudrais transférer un fichier XML à un autre en utilisant PHP via xslt. Sur la sortie j'ai besoin de quelques ajustements, mais je ne sais pas comment ajuster ma feuille de style xsl.XML vers XML en utilisant XSLT php
Merci pour votre aide
ajustements nécessaires sur la sortie:
- ajouter comptage dynamique à l'élément de catégorie comme
<category1> <category2>
... - ajouter tout le contenu de l'élément CALIBRE DU PRODUIT/COULEURS/COULEUR/AVAILABLE_SIZE à
<$color>
élément comme<green>S:M:L:XL</green> <orange>L:M</orange>
- ajouter dynamique comptant à l'image élément comme
<image1> <image2>
la source xml:
<?xml version="1.0" encoding="utf-8"?>
<PRODUCTS>
<PRODUCT>
<CODE>19</CODE>
<NAME>daisy</NAME>
<MANUFACTURER>79</MANUFACTURER>
<DESCRIPTION>t-shirt</DESCRIPTION>
<SIZES></SIZES>
<PRICE>33.33</PRICE>
<PRICE_AKCIA>24.17</PRICE_AKCIA>
<CATEGORY_ID>42</CATEGORY_ID>
<CATEGORIES>
<CATEGORY>clothes</CATEGORY>
<CATEGORY>t-shirt</CATEGORY>
<CATEGORY>latest</CATEGORY>
</CATEGORIES>
<COLORS>
<COLOR>
<NAME>green</NAME>
<IMAGE>http://www.xyz.com/userfiles/daisy_green.png</IMAGE>
<AVAILABLE_SIZES>
<SIZE>S</SIZE>
<SIZE>M</SIZE>
</AVAILABLE_SIZES>
<SIZES>
<SIZE>S</SIZE>
<SIZE>M</SIZE>
<SIZE>L</SIZE>
<SIZE>XL</SIZE>
</SIZES>
</COLOR>
<COLOR>
<NAME>orange</NAME>
<IMAGE>http://www.xyz.com/userfiles/daisy_orange.png</IMAGE>
<AVAILABLE_SIZES>
<SIZE>L</SIZE>
<SIZE>M</SIZE>
</AVAILABLE_SIZES>
<SIZES>
<SIZE>S</SIZE>
<SIZE>M</SIZE>
<SIZE>L</SIZE>
<SIZE>XL</SIZE>
</SIZES>
</COLOR>
</COLORS>
</PRODUCT>
</PRODUCTS>
xsl: stylesheet:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
<xsl:element name="products">
<xsl:apply-templates select="PRODUCTS/PRODUCT"/>
</xsl:element>
</xsl:template>
<xsl:template match="PRODUCTS/PRODUCT">
<xsl:element name="product">
<xsl:element name="id">
<xsl:value-of select="CODE"/>
</xsl:element>
<xsl:element name="name">
<xsl:value-of select="NAME"/>
</xsl:element>
<xsl:element name="model">
<xsl:value-of select="CODE"/>
</xsl:element>
<xsl:element name="manufacturer">
<xsl:value-of select="MANUFACTURER"/>
</xsl:element>
<xsl:element name="category_id">
<xsl:value-of select="CATEGORY_ID"/>
</xsl:element>
<xsl:apply-templates select="CATEGORIES"/>
<xsl:element name="description">
<xsl:value-of select="DESCRIPTION"/>
</xsl:element>
<xsl:element name="price">
<xsl:value-of select="PRICE"/>
</xsl:element>
<xsl:element name="special">
<xsl:value-of select="PRICE_AKCIA"/>
</xsl:element>
<xsl:apply-templates select="COLORS/COLOR"/>
<xsl:apply-templates select="COLORS"/>
</xsl:element>
</xsl:template>
<xsl:template match="CATEGORIES">
<xsl:for-each select="CATEGORY">
<xsl:element name="category">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template match="COLORS">
<xsl:for-each select="COLOR/NAME">
<xsl:variable name="color" select="." />
<xsl:element name="{$color}">
<xsl:apply-templates select="COLOR/AVAILABLE_SIZES"/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template match="COLORS/COLOR">
<xsl:for-each select="IMAGE">
<xsl:element name="image">
<xsl:value-of select="."/>
</xsl:element>
</xsl:for-each>
</xsl:template>
<xsl:template match="COLOR/AVAILABLE_SIZES">
<xsl:for-each select="SIZE">
<xsl:value-of select="."/>:
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
Résultat:
<?xml version="1.0" encoding="UTF-8"?>
<products>
<product>
<id>19</id>
<name>daisy</name>
<model>19</model>
<manufacturer>79</manufacturer>
<category_id>42</category_id>
<category>clothes</category>
<category>t-shirt</category>
<category>latest</category>
<description>t-shirt</description>
<price>33.33</price>
<special>24.17</special>
<image>http://www.xyz.com/userfiles/daisy_green.png</image>
<image>http://www.xyz.com/userfiles/daisy_orange.png</image>
<green/>
<orange/>
</product>
</products>
Bonjour! Pourriez-vous également ajouter votre résultat attendu, car cela rendrait encore plus clair ce dont vous avez besoin? Merci! –