如何使用XSLT将xml转换为sql查询?

问题描述 投票:0回答:1

我有一个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>&#xa;</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:中所示。我知道嵌套的for循环不是正确的方法。我知道应将内部for循环替换为其他逻辑。我不确定该怎么办。

任何人都可以指导我如何做。

谢谢。

xml xslt xslt-grouping
1个回答
1
投票

怎么样:

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.