注:经本人测试,此例不仅限于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了。