您需要做的是将您的 XML 数据转换为一种更适合 Access 的格式。具体来说,需要在每个子节点中插入父键值(假设本例为C_NOT)。
以下 XSLT 文件将为您完成此操作
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output indent="yes"/>
<xsl:strip-space elements="*"/>
<xsl:template match="/">
<dataroot>
<xsl:apply-templates select="@*|node()"/>
</dataroot>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
<xsl:template match="NOTARIAS">
<xsl:apply-templates select="@*|node()"/>
</xsl:template>
<xsl:template match="NOTARIA">
<NOTARIA>
<C_NOT><xsl:value-of select="../../C_NOT"/></C_NOT>
<xsl:apply-templates select="@*|node()"/>
</NOTARIA>
</xsl:template>
</xsl:stylesheet>
这将使您的 XML 从此...
<NOTARIO>
<C_NOT>8404180</C_NOT>
<APE>Abalos Nuevo</APE>
<NOM>Francisco José</NOM>
<NOTARIAS>
<NOTARIA>
<PRO>23</PRO>
<MUN>0888</MUN>
<F_IN>1984-12-01</F_IN>
<F_FI>1986-09-19</F_FI>
</NOTARIA>
<NOTARIA>
<PRO>14</PRO>
<MUN>0569</MUN>
<F_IN>1990-09-17</F_IN>
<F_FI>1995-03-15</F_FI>
</NOTARIA>
<NOTARIA>
<PRO>21</PRO>
<MUN>0412</MUN>
<F_IN>1995-03-30</F_IN>
<F_FI></F_FI>
</NOTARIA>
</NOTARIAS>
</NOTARIO>
...进入这个:
<?xml version="1.0" encoding="UTF-8"?>
<dataroot>
<NOTARIO>
<C_NOT>8404180</C_NOT>
<APE>Abalos Nuevo</APE>
<NOM>Francisco José</NOM>
<NOTARIA>
<C_NOT>8404180</C_NOT>
<PRO>23</PRO>
<MUN>0888</MUN>
<F_IN>1984-12-01</F_IN>
<F_FI>1986-09-19</F_FI>
</NOTARIA>
<NOTARIA>
<C_NOT>8404180</C_NOT>
<PRO>14</PRO>
<MUN>0569</MUN>
<F_IN>1990-09-17</F_IN>
<F_FI>1995-03-15</F_FI>
</NOTARIA>
<NOTARIA>
<C_NOT>8404180</C_NOT>
<PRO>21</PRO>
<MUN>0412</MUN>
<F_IN>1995-03-30</F_IN>
<F_FI />
</NOTARIA>
</NOTARIO>
</dataroot>
...在 Access 导入时在后台。
将该 XSLT 文件保存到您的硬盘驱动器(我将我的文件称为“transformio.xslt”),然后启动 Access XML 导入过程。选择要导入的 XML 文件后,单击“转换”按钮 ...
...将您新创建的 XSLT 文件添加到列表中并选择它...
当您单击“确定”并返回到“导入 XML”对话框时,您可以展开树视图以查看您现在在两个表中都有 C_NOT 值。
导入完成后,您仍然有两个表,但现在您可以在C_NOT 上将它们加入以获取数据的“平面”视图:
这给了我们