Sql 解释如何使用XSLT将XML文档导出为关系数据库

Sql 解释如何使用XSLT将XML文档导出为关系数据库,sql,mysql,ms-access,xslt,Sql,Mysql,Ms Access,Xslt,我想更好地理解获取像这个早餐菜单这样的XML文档所需的基本步骤 <?xml version="1.0" encoding="ISO-8859-1"?> <breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description>two of our

我想更好地理解获取像这个早餐菜单这样的XML文档所需的基本步骤

<?xml version="1.0" encoding="ISO-8859-1"?>
<breakfast_menu>
    <food>
        <name>Belgian Waffles</name>
        <price>$5.95</price>
        <description>two of our famous Belgian Waffles with plenty of real maple syrup</description>
        <calories>650</calories>
    </food>
    <food>
        <name>Strawberry Belgian Waffles</name>
        <price>$7.95</price>
        <description>light Belgian waffles covered with strawberries and whipped cream</description>
        <calories>900</calories>
    </food>
    <food>
        <name>Berry-Berry Belgian Waffles</name>
        <price>$8.95</price>
        <description>light Belgian waffles covered with an assortment of fresh berries and whipped cream</description>
        <calories>900</calories>
    </food>
    <food>
        <name>French Toast</name>
        <price>$4.50</price>
        <description>thick slices made from our homemade sourdough bread</description>
        <calories>600</calories>
    </food>
    <food>
        <name>Homestyle Breakfast</name>
        <price>$6.95</price>
        <description>two eggs, bacon or sausage, toast, and our ever-popular hash browns</description>
        <calories>950</calories>
    </food>
</breakfast_menu>

华夫饼
$5.95
我们的两个著名的比利时华夫饼干,里面有很多真正的枫糖浆
650
草莓比利时华夫饼干
$7.95
覆盖草莓和鲜奶油的淡比利时华夫饼干
900
浆果比利时华夫饼干
$8.95
淡比利时华夫饼干,上面覆盖着各种新鲜浆果和鲜奶油
900
法式吐司
$4.50
用我们自制的酸面包做成的厚片
600
家庭式早餐
$6.95
两个鸡蛋,培根或香肠,土司,还有我们一直受欢迎的炸土豆条
950
并使用XSLT将其“导出”为Access或MySQL数据库,创建两个连接表:

  • 餐桌:早餐菜单
    • 字段:菜单项\u id
    • 字段:食品id
  • 餐桌:食物
    • 字段:食品id
    • 字段:名称
    • 字段:价格
    • 字段:说明
    • 字段:卡路里
如果你知道有关于这方面的在线教程,我也会有兴趣了解更多


谢谢。

XSLT将一个文档树转换为另一个文档树。据我所知,MySQL没有直接的连接器可以将转换后的数据插入MySQL

另一种选择可能是生成可由MySQL导入的XML

mysqldump
实用程序接受--xml选项,该选项允许以xml格式转储数据(因此您可以将数据转换为xml格式)。不幸的是,从文件中加载数据是一个技巧。但在MySQL 6.0.3中,出现了一个新的LOAD XML语句,可以用于此目的

我相信,通过使用XML读取器读取XML并使用任何现代编程语言中的标准数据库连接器逐行插入数据,可以很容易地解决这一任务

UPD

xsl可能如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    <xsl:output method="text"/>

    <xsl:template match="breakfast_menu">
        <xsl:apply-templates mode="insert-to-food" select="food" />
        <xsl:apply-templates mode="insert-to-breakfast_menu" select="food" />
    </xsl:template>

    <xsl:template mode="insert-to-food" match="food">
        <xsl:text>INSERT INTO food(</xsl:text>
        <xsl:number />
        <xsl:text>, '</xsl:text>
        <xsl:value-of select="name" />
        <xsl:text>', '</xsl:text>
        <xsl:value-of select="price" />
        <xsl:text>', '</xsl:text>
        <xsl:value-of select="description" />
        <xsl:text>', </xsl:text>
        <xsl:value-of select="calories" />
        <xsl:text>);&#xA;</xsl:text>
    </xsl:template>

    <xsl:template mode="insert-to-breakfast_menu" match="food">
        <xsl:text>INSERT INTO breakfast_menu(1, </xsl:text>
        <xsl:number />
        <xsl:text>);&#xA;</xsl:text>
    </xsl:template>
</xsl:stylesheet>

插入食物中(
, '
', '
', '
', 
);
;
插入早餐菜单(1,
);
;

XSLT可用于生成必要的INSERT INTO SQL命令以填充表。但是,提供的XML没有任何与
菜单项\u id
相关的数据。您有没有这个XSLT的示例?呃,有什么原因不能直接导出,例如。,将您的MySQL表链接到Access,然后只添加数据?关于将数据从XML转换为SQL的具体建议有没有?旁注:如果任何XML文本字段包含一个引号,XSL显然会中断。我还建议您使用一种常规的编程语言,使用一些XML和数据库的概念来完成所有这些工作。