2011-07-28 8 views
2

スプレッドシートを特定のxmlレイアウトにエクスポートして、pdf形式にインポートしようとしています。私は自分自身でかなり遠くになってしまったが、終わり近くにいるように見える。 (私はあなたにプログラミングに習熟していないし、XML/XSLTでの私の経験はこのプロジェクトに限られています)スプレッドシートからXMLリストのリストに変換する

まず、pdfからデータのサンプルセットをエクスポートしました。を探しています。私はそれをExcelにインポートし、データからスプレッドシートを得ました。これにより、データを簡単に編集して元に戻すことができますが、Excelではリスト上の問題のためにインポート時に作成したXMLマップはエクスポートされません。これにより、SpeadsheetをOpenOffice(技術的にはLibreOffice)に入れ、XSLTを使ってXMLエクスポートフィルタを試してみました。

私はそれのような...

<?xml version="1.0" encoding="UTF-8" ?> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    <Amount weight="5"/> 
    - <HM Material="s"> 
     <Amount weight="2" /> 
    </HM> 
    - <HM Material="t"> 
     <Amount weight="3" /> 
    </HM> 
    </Product> 
    - <Product Compound="Y"> 
    <Amount weight="4"/> 
    - <HM Material="r"> 
     <Amount weight="4" /> 
    </HM> 
    </Product> 
    </MCD> 

としてエクスポートする必要があります。しかし、私の現在のXSLで、私はより多くのような何かを得る

Type Name Compound Weight Material Weight 
AAA  BBB   X   5  s   2 
AAA  BBB   X   5  t   3 
AAA  BBB   Y   4  r   4 

...のようなスプレッドシートの私のデータが見えます...

<?xml version="1.0" encoding="UTF-8" ?> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    <Amount weight="5"/> 
    - <HM Material="s"> 
     <Amount weight="2" /> 
    </HM> 
    </Product> 
    </MCD> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="X"> 
    - <HM Material="t"> 
     <Amount weight="3" /> 
    </HM> 
    </Product> 
    </MCD> 
- <MCD Type="AAA" Name="BBB"> 
    - <Product Compound="Y"> 
    <Amount weight="4"/> 
    - <HM Material="r"> 
     <Amount weight="4" /> 
    </HM> 
    </Product> 
    </MCD> 

私の問題は、スプレッドシートの各セルが出力にあることにあります。私は親のセルがフォルダツリーのように変更されたときにのみ再表示されるようにしたい。私はこれが理にかなって、誰かが私を助けてくれることを願っています(私の検索からOpenOfficeのルートがそうだと思われますが、それをExcelまたはOpenOfficeで作ってください)。私は答えを探し求めましたが、私のニーズには全く答えられていません。前もって感謝します。

+1

あなたは簡単に消化何かに例を減らすことができ、好ましくはスクロールせずに、例えばA、B、C、1,2,3およびそれより少ない列の表を使用していますか?また、「このXMLを手に入れたら、代わりにこのXMLを手に入れたい」と表示できれば助かります。 –

+1

もちろん私はそれをもっと簡単にすることができます。申し訳ありませんが、私はあまりにも多くのexperianceコーディングやヘルプを求めることはありません。うまくいけば、これは今より良いです。あなたが私を助けるのを助けるために他に何かがあるならば、ただ聞いてください。 – Scott

+0

オープンオフィスには何がありますか?指定したCSVファイルをXMLに変換するだけで検索していますか?ターゲットとなるXSLTのバージョンも示してください。 –

答えて

0

あなたの最後のXMLから始めて、次のスタイルシートを使用して、XSLT 2を使用している場合:

<?xml version="1.0" encoding="iso-8859-1"?> 
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> 

    <xsl:template match="/"> 
    <xsl:for-each-group select="//MCD" group-by="concat(@Type,'-',@Name)"> 
     <MCD Type="{@Type}" Name="{@Name}"> 
     <xsl:for-each select="//Product[(parent::MCD/@Type = substring-before(current-grouping-key(),'-')) and (parent::MCD/@Name = substring-after(current-grouping-key(),'-'))]"> 
      <xsl:copy-of select="." /> 
     </xsl:for-each> 
     </MCD> 
    </xsl:for-each-group> 
    </xsl:template> 

</xsl:stylesheet> 

あなたが得るでしょう:

<?xml version="1.0" encoding="UTF-8"?><MCD Type="AAA" Name="BBB"><Product Compound="X"> 
    <Amount weight="5"/> 
    <HM Material="s"> 
     <Amount weight="2"/> 
    </HM> 
    </Product><Product Compound="X"> 
    <HM Material="t"> 
     <Amount weight="3"/> 
    </HM> 
    </Product><Product Compound="Y"> 
    <Amount weight="4"/> 
    <HM Material="r"> 
     <Amount weight="4"/> 
    </HM> 
    </Product></MCD> 
関連する問題