У меня есть файл xml, и я хочу создать запрос sql из него. как показано ниже
OUTPUT NEEDED:
INSERT INTO 'table' values
('2','0','SUGAR_QTY','2','2')
('2','0','OIL_QTY','5','1')
<recConfig>
<default_rec>
<recid>
2
</recid>
<recname>
WHITE_BREAD
</recname>
<description>
</description>
<accesslevel>
0
</accesslevel>
<parameter>
<parameterCode>
SUGAR_QTY
</parameterCode>
<parameterValue>
2
</parameterValue>
<ordinal>
2
</ordinal>
</parameter>
<parameter>
<parameterCode>
OIL_QTY
</parameterCode>
<parameterValue>
5
</parameterValue>
<ordinal>
1
</ordinal>
</parameter>
</default_rec>
</recConfig>
Это мой XSLT-файл
<?xml version="1.0" encoding="UTF-8" ?>
<xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="text" encoding="UTF-8" indent="yes" />
<xsl:template match="/">
<xsl:text>"INSERT INTO 'recipe_parametrs'</xsl:text>
<xsl:text> values</xsl:text>
<xsl:for-each select="recConfig/default_rec">
<xsl:text>
</xsl:text>
<xsl:text> ('</xsl:text>
<xsl:value-of select="normalize-space(recid)"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="normalize-space(accesslevel)"/>
<xsl:text>','</xsl:text>
<xsl:for-each select="parameter">
<xsl:value-of select="normalize-space(parameterCode)"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="normalize-space(parameterValue)"/>
<xsl:text>','</xsl:text>
<xsl:value-of select="normalize-space(ordinal)"/>
<xsl:text>','</xsl:text>
</xsl:for-each>
<xsl:text>')</xsl:text>
</xsl:for-each>
<xsl:text>;</xsl:text>
</xsl:template>
</xsl:transform>
Вывод, который я получаю, это
"INSERT INTO 'recipe_parametrs' values
('2','0','SUGAR_QTY','2','2','OIL_QTY','5','1','');
Я только начал изучать xslt вчера , Я не знаю, как разделить SUGAR_QTY и OIL_QTY на разные запросы, как показано в OUTPUT NEEDED:. Я понимаю, что вложенный для l oop не правильный способ сделать это. Я знаю, что внутренняя часть для l oop должна быть заменена какой-то другой логикой c. Я не уверен, что делать.
Может кто-нибудь, пожалуйста, подскажите мне, как это сделать.
Спасибо.