1

这与之前的帖子有关。我正在尝试将经济数据从 StLouisFred 导入 Access。我最终会将此数据库用于excel。我是一名学生,这项任务虽然很简单,但超出了我的经验。我也尝试将 XML 数据导入 Excel,但是,格式仍然是个问题。我知道 FRED 使用 CSV,但你不能自动更新 CSV,所以我想使用 XML。数据格式如下:

 <observations realtime_start="2013-02-08" realtime_end="2013-02-08"  
 observation_start="1776-07-04" observation_end="9999-12-31" units="lin"   
 output_type="2" file_type="xml" order_by="observation_date" sort_order="asc" 
 count="792" offset="0"        limit="100000">
 <observation date="1947-01-01" CPIAUCSL_20130208="21.48"/>
 <observation date="1947-02-01" CPIAUCSL_20130208="21.62"/>
 <observation date="1947-03-01" CPIAUCSL_20130208="22.0"/>
 </observations>

我正在尝试将数据转换为 Access 喜欢的其他标准 xml 格式。像这样的东西:

<observations realtime_start="2013-02-08" realtime_end="2013-02-08"  
 observation_start="1776-07-04" observation_end="9999-12-31" units="lin"   
 output_type="2" file_type="xml" order_by="observation_date" sort_order="asc" 
 count="792" offset="0"        limit="100000">

 <observation> 
 <date> 1947-01-01 </date>
 <value> 21.48 </value> 
 <observation/>

 <observation> 
 <date>1947-02-01</date> 
 <value>21.62</value>
 </observation>

 <observation> 
 <date>1947-03-01</date> <value>22.0</value>
 </observation>

 </observations>

看来这会奏效。Access 能够使用样式表,我很乐意尝试,但我需要一些简单的演练。因此,假设我有一张第一个 xml 格式的信息。有没有办法让我将数据转换为 Access,以便我可以拥有一个可以自动更新的表,或者这是一个无望的项目?

4

1 回答 1

2

这是一个简单的 XSLT 转换:

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>

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

 <xsl:template match="observation/@date">
  <date><xsl:value-of select="."/></date>
 </xsl:template>

 <xsl:template match="observation/@*[starts-with(name(),'CPIAUCSL_')]">
  <value><xsl:value-of select="."/></value>
 </xsl:template>
</xsl:stylesheet>

当此转换应用于提供的 XML 文档时:

<observations realtime_start="2013-02-08"
     realtime_end="2013-02-08"
     observation_start="1776-07-04"
     observation_end="9999-12-31" units="lin"
     output_type="2" file_type="xml"
     order_by="observation_date" sort_order="asc"
     count="792" offset="0"        limit="100000">
    <observation date="1947-01-01" CPIAUCSL_20130208="21.48"/>
    <observation date="1947-02-01" CPIAUCSL_20130208="21.62"/>
    <observation date="1947-03-01" CPIAUCSL_20130208="22.0"/>
</observations>

产生了想要的正确结果:

<observations realtime_start="2013-02-08"
 realtime_end="2013-02-08" observation_start="1776-07-04"
 observation_end="9999-12-31" units="lin" output_type="2"
 file_type="xml" order_by="observation_date" sort_order="asc"
 count="792" offset="0" limit="100000">
   <observation>
      <date>1947-01-01</date>
      <value>21.48</value>
   </observation>
   <observation>
      <date>1947-02-01</date>
      <value>21.62</value>
   </observation>
   <observation>
      <date>1947-03-01</date>
      <value>22.0</value>
   </observation>
</observations>
于 2013-03-05T03:23:09.520 回答