2009-07-16 3 views
1

私は優れたオープンソースマインドマップソフトウェアFreeMindから最高のものを得ようとしています。マップを設計した結果として、私は実際には、単純な構造を有するXMLファイルであるファイルを取得:単純化のためにXSLT 1.0:各端末ノードに対して、その祖先チェーンをCSV形式でダンプします。

<node TEXT="0th text i am interested in"> 
    <node TEXT="1st text i am interested in"> 
    <node TEXT="2nd text i am interested in"> 
     <node TEXT="3dh text i am interested in"> 
     <node TEXT="4th text i am interested in"/> 
     </node> 
    </node> 
......... 

を私は(自分のアプリケーションのために)興味のない属性を削除しました。

ご覧のとおり、これは単純な包含階層です。コードスニペットがエクスポートに使用されていますが、私の必要に応じて、各ノード子供なしでテキストを作成したいと思います。は左に祖先のチェーンをカンマまたはコロンで区切っています。

0th node; 1st text ; 2nd text; 3dh text; 4th text 
... then a new data line 

私の目標は、迅速それぞれと端末のみのノードに対して完全な適格そのノードへのパスとこれをチェックすることができることです。つまり、私のようなものを見たいのですが。私は "点数"を得ることができなければならないでしょうか(私は1.2.3.4 ...というようにノードのネスト位置をマークしています; XSLTで役に立つ何かがあることを覚えていますこの)。

このXSLTは、残念ながら、私は今それを行うことができません、私のXSLT流暢非常に悪いFreeMindのインターフェース

の力で簡単に階層を処理した後、スナップでcsvファイルに完全修飾リストをダンプできるようになります。それは残念ですが、XSLTは非常に強力なツールです...誰かが私にヒントを持っていますか?

答えて

3

<xsl:output method="text" indent="no" encoding="utf-8" /> 
<xsl:strip-space elements="*" /> 

<xsl:template match="//node[not(node)]"> 
    <xsl:for-each select="ancestor::node"> 
     <xsl:value-of select="@TEXT" /> 
     <xsl:text> ; </xsl:text> 
    </xsl:for-each> 
    <xsl:value-of select="@TEXT" /> 
    <xsl:text>&#10;</xsl:text> 
</xsl:template> 

+0

も...完璧です!私が探していたことをx-実際には...ありがとう! – Daniel