更改要导入Access数据库的Xml结构

本文关键字:Xml 结构 数据库 Access 导入 | 更新日期: 2023-09-27 18:07:00

我需要更改一个以属性为中心的XML文件,以便它适合导入到Access数据库中定义的列。

我一直在阅读XSLT以更改代码,但运气不好,输出仍然没有按我想要的方式提供表。

下面是XML代码:

<Database>
<ChildRecords>
     <ChildRecord>
         <TableName>Client</TableName>
                  <Columns>
                     <Column Name="id" Data="1234"/>
                     <Column Name="forename" Data="John"/>
                     <Column Name="surname" Data="Smith"/>
                  </Columns>
       </Childrecord>
       <ChildRecord>
         <TableName>Product</TableName>
                  <Columns>
                     <Column Name="id" Data="4321"/>
                     <Column Name="description" Data="Bed"/>
                     <Column Name="price" Data="100"/>
                  </Columns>
       </Childrecord>
</ChildRecords>
</Database>

EDIT*所需输出代码:

<Database>
    <Client>
       <id>1234</id>
       <forename>John</forename>
       <surname>Smith</surname>
    </Client>
    <Product>
       <id>1234</id>
       <description>Bed</description>
       <price>100</price>
    </Product>
</Database>

更改要导入Access数据库的Xml结构

试试下面的样式表。它从您的输入示例中生成所需的输出(一旦更正格式良好!)。我不确定输出格式是否正确与多个记录的表。

XSLT 1.0

<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 
<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="yes"/>
<xsl:template match="/">
    <Database>
         <xsl:for-each select="Database/ChildRecords/ChildRecord">
            <xsl:element name="{TableName}">
                <xsl:for-each select="Columns/Column">
                    <xsl:element name="{@Name}">
                        <xsl:value-of select="@Data" />
                    </xsl:element>
                </xsl:for-each>
            </xsl:element>
         </xsl:for-each>
    </Database>
</xsl:template>
</xsl:stylesheet>