Я пытаюсь взять файл CSV в качестве входных данных и преобразовать его в XML. Я новичок в XSLT и нашел способ преобразовать CSV в XML (используя пример из Эндрю Велч) вот так:
Входной файл CSV:
car manufacturer,model,color,price,inventory
subaru,outback,blue,23195,54
subaru,forester,silver,20495,23
И мой выходной XML будет:
<?xml version="1.0" encoding="UTF-8"?>
<rows>
<row>
<column name="car manufacturer">subaru</column>
<column name="model">outback</column>
<column name="color">blue</column>
<column name="price">23195</column>
<column name="inventory">54</column>
</row>
<row>
<column name="car manufacturer">subaru</column>
<column name="model">forester</column>
<column name="color">silver</column>
<column name="price">20495</column>
<column name="inventory">23</column>
</row>
</rows>
Мой желаемый результат на самом деле похож на:
<stock>
<model>
<car>subaru outback</car>
<color>blue</color>
<price>23195</price>
<inventory>54</inventory>
</model>
<model>
<car>subaru forester</car>
<color>silver</color>
<price>20495</price>
<inventory>23</inventory>
</model>
</stock>
Я прочитал, что лучше всего было бы использовать двухфазное преобразование. Преобразование CSV в XML выполняется с использованием XSLT 2.0, поэтому я подумал, что двухфазное преобразование будет выполняться с его использованием и без использования функции набора узлов.
Итак, на первом этапе нужно принять исходный файл CSV в качестве входных данных, а затем вывести промежуточный XML, показанный выше. Затем возьмите этот промежуточный XML и передайте его другому преобразованию, чтобы получить желаемый результат.
Кто-нибудь может помочь в том, как можно сделать двухфазное преобразование? У меня возникли проблемы с передачей выхода фазы 1 как входа фазы 2?
У меня пока что-то вроде этого:
<xsl:import href="csv2xml.xsl"/>
<xsl:output method="xml" indent="yes" />
<xsl:variable name="intermediate">
<xsl:apply-templates select="/" mode="csv2xml"/>
</xsl:variable>
<xsl:template match="rows" name="main">
**[This is what I'm having trouble with]**
</xsl:template>