FreeMindファイルをCSVに変換

FreeMindからCSVへの変換、[ファイル]/[エクスポート]/[XSLTを使用…]で、FreeMindのインストールディレクトリにあるaccessories\mm2csv.xslを使用するとできます。

例えば

mm2csv.xslを使ってCSVにすると、

foo
,bar1
,,baz11
,,baz12
,,,foobar121
,bar2
,bar3
,,baz31

というファイルができます。
でも、

foo,bar1,baz11
foo,bar1,baz12,foobar121
foo,bar2
foo,bar3,baz31

というようなCSVに変換したかったので、mm2csv.xslを参考にmm2flattencsv.xslを書いてみました。

<?xml version="1.0"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:output method="text" encoding="UTF-8"/>
  <xsl:template match="/">
    <xsl:apply-templates/>
  </xsl:template>
  <xsl:template name="linebreak">
   <xsl:text>
</xsl:text>
  </xsl:template>
  <xsl:template match="map">
    <xsl:apply-templates select="child::node"/>
  </xsl:template>
  <xsl:template match="node">
    <xsl:param name="leftColumns"/>
    <xsl:variable name="columns" select="concat($leftColumns,@TEXT)"/>
    <xsl:apply-templates select="child::node">
      <xsl:with-param name="leftColumns" select="concat($columns,',')"/>
    </xsl:apply-templates>
    <xsl:if test="not(node)">
      <xsl:value-of select="$columns"/>
      <xsl:call-template name="linebreak"/>
    </xsl:if>
  </xsl:template>
</xsl:stylesheet>

もし使用されるときはas-isで。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

CAPTCHA