位置:海鸟网 > IT > XML >

用XSLT把XML的数据输入数据库

注:经本人测试,此例不仅限于MY SQL,且适用于大多数DATABASE

用XSLT把XML的数据输入数据库(MY SQL)的例子:

<?xml version="1.0"?>
<xsl:stylesheet version="1.0"  xmlns:xsl="">
  <xsl:output method = "text" indent = "yes"/>
  <xsl:template match = "/" >
  <xsl:apply-templates select="*"/>
  </xsl:template>
  <!-- get the value to insert into the table "Qnre" -->
  <xsl:template match = "Qnre">
    <xsl:text>insert into Qnre values ('</xsl:text>
    <xsl:value-of select="@id"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@client"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@author"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@contact"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@version"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@topic"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@date"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qtitle"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qtitle/@clientlogo"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/@privacy"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/@heading"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/@para"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/@Qitem"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qbody/@action"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qbody/@uploads"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qbody/@bid"/>
    <xsl:text>');
</xsl:text>
    <!-- set to <Qsection> -->
    <xsl:apply-templates select="Qbody/Qsection"/>
  </xsl:template>
  <!-- get the value to insert into the table "Qsection" -->
  <xsl:template match = "Qsection">
   <xsl:text>insert into Qsection values ('</xsl:text>
   <xsl:value-of select="/Qnre/@id"/>
   <xsl:text>','</xsl:text>
   <xsl:value-of select="@sid"/>
   <xsl:text>','</xsl:text>
   <xsl:value-of select="Qintro/Qprivacy"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qheading"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qpara"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qitem"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="goto"/>
    <xsl:text>');
</xsl:text>
    <!-- set to <Question> -->
    <xsl:apply-templates select="Question"/>
  </xsl:template>
  <!-- get the value to insert into the table "Question" -->
  <xsl:template match="Question">
    <xsl:text>insert into Question values ('</xsl:text>
    <xsl:value-of select="/Qnre/@id"/>
    <xsl:text>','</xsl:text>
    <!-- set to <Qsection> -->
    <xsl:value-of select="../@sid"/>
    <xsl:text>','</xsl:text>
   <xsl:value-of select="@qid"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@kind"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qprivacy"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qheading"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qpara"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qintro/Qitem"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qtext"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qanswer/Qother"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qanswer/@answertype"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="Qanswer/Qlink/@goto"/>
    <xsl:text>');
</xsl:text>
    <!-- set to <Qchoice> -->
    <xsl:apply-templates select="Qanswer/Qchoice"/>
  </xsl:template>
  <!-- get the value to insert into the table "Qchoice" -->
  <xsl:template match="Qchoice">
    <xsl:text>insert into Qchoice values ('</xsl:text>
    <xsl:value-of select="/Qnre/@id"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="/Qnre/Qbody/Qsection/@sid"/>
    <xsl:text>','</xsl:text>
    <!-- set to <Question> -->
    <xsl:value-of select="../../@qid"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="@val"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="/Qother/Qlink/@goto"/>
    <xsl:text>','</xsl:text>
    <xsl:value-of select="."/>
    <xsl:text>');
</xsl:text>
    </xsl:template>
</xsl:stylesheet>

/===========
输出结果文件可以另存为SQL FILE。然后在LINUX的COMMEND LINE里直接输入文件名就能自动INSERT INTO DATABASE了。