首页 > 解决方案 > 使用 XSL 转换将 XML 导入 Access

问题描述

关于这个主题的许多问题已经得到解答,但我似乎无法通过调整它们来解决我的问题,所以我不得不再次提问。

我有这个 XML 文件:

 <ARTICLE CREATION_DATETIME="2018-07-02T17:38:25.0330824+02:00" PROD_DATE="2018-07-02T00:00:00" VALID_DATE="2018-07-02T00:00:00" xmlns="http://www.hcisolutions.ch/index">
  <ART DT="2018-06-20T00:00:00+02:00">
    <PHAR>0103504</PHAR>
    <PHARMACODE>103504</PHARMACODE>
    <GTIN>7680379690281</GTIN>
    <ARTNO>103504</ARTNO>
    <GRPCD>M1</GRPCD>
    <CDSO1>03.00.00.00</CDSO1>
    <PRDNO>17437</PRDNO>
    [...goes on for miles...]
    <ARTPRI>
      <VDAT>2018-01-01T00:00:00+01:00</VDAT>
      <PTYP>PEXF</PTYP>
      <PRICE>10.55</PRICE>
    </ARTPRI>
  </ART>
  <ART> [...]

我想将 PHARMACODE 属性添加到 ARTPRI 子节点,以便在导入 Access 后可以链接主 ART 表和子 ARTPRI 表。

期望的输出:

      <ART DT="2018-06-20T00:00:00+02:00">
        <PHAR>0103504</PHAR>
        <PHARMACODE>103504</PHARMACODE>
        <GTIN>7680379690281</GTIN>
        <ARTNO>103504</ARTNO>
        <GRPCD>M1</GRPCD>
        <CDSO1>03.00.00.00</CDSO1>
        <PRDNO>17437</PRDNO>
        [...goes on for miles...]
        <ARTPRI>
          <PHARMACODE>103504</PHARMACODE>
          <VDAT>2018-01-01T00:00:00+01:00</VDAT>
          <PTYP>PEXF</PTYP>
          <PRICE>10.55</PRICE>
        </ARTPRI>
[...goes on for miles...]

调整我发现的关于这个主题的各种答案,这是我的实际 XSL 文件,它没有做任何事情(据我所知):

<?xml version="1.0" ?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="@*|node()">
    <xsl:copy>
        <xsl:apply-templates select="@*|node()"/>
    </xsl:copy>
</xsl:template>

<xsl:template match="ARTPRI">
    <xsl:copy>
      <xsl:apply-templates select="@*"/>
      <xsl:copy-of select="ancestor::ART/PHARMACODE"/>
      <xsl:apply-templates select="node()"/>
    </xsl:copy>
</xsl:template>
</xsl:stylesheet>

它出什么问题了?

标签: xmlms-accessxslt

解决方案


推荐阅读