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 に答える