xslt를 통해 php를 사용하여 XML 파일을 다른 파일로 변환하고 싶습니다. 출력에서 약간의 조정이 필요하지만 내 xsl 스타일 시트를 조정하는 방법을 모르겠습니다. 당신의 도움에 대한XSLT php를 사용하는 XML to XML
감사
출력에필요한 조정 : 제품/COLORS/COLOR의 요소 크기의 모든 콘텐츠를 추가
- 이
<category1> <category2>
같은 카테고리 요소에 동적 계산을 추가 .../AVAILABLE_SIZE에서<$color>
요소까지<green>S:M:L:XL</green> <orange>L:M</orange>
- 이미지 요소에 동적 계산 추가
<image1> <image2>
소스 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 스타일 시트 :
<?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>
결과 : 동적이라는 요소를 갖고 싶어
<?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>
안녕하세요입니다! 기대 한 결과물을 더할 수 있습니까? 그러면 그것이 당신이 필요로하는 것을 더 분명하게 해줄 수 있습니까? 감사! –