2016-09-22 14 views
0

私はXSLTエクスポートフィルタを使用して、OpenOffice Calcスプレッドシートの一部をXMLファイルにエクスポートしています。XSLTエクスポートフィルタは不要な空のXMLタグを生成します

フィルタの一部は、スクリプトが実行されるたびに異なる量のエントリが存在する可能性があるため、xls:for-eachの繰り返しを使用します。しかし、その反復は、コンテンツを持つものの後に空のXMLタグを生成します。 XSLTエクスポートフィルタは現在このようになりhttp://imgur.com/a/ALPX2(列A及びBは、データの柔軟な量を含有することができる)

http://pastebin.com/ugW9CuSw

、結果は次のようになります

Calcのシートは、このようになりますhttp://pastebin.com/HiYXFrAY

私は何らかのxsl:ifを追加できると考えましたが、それをselect="table:table-row[n]/table:table-cell[m]"という概念と組み合わせることはできませんでした。

だから、誰かが空のXMLタグの原因やその除去方法を知っているかもしれません。

答えて

1

私は唯一の非空table-cellを持つtable-row要素を処理するインスタンスの<xsl:for-each select="table:table-row[position() &gt; 1][table:table-cell]"><xsl:for-each select="table:table-row[position() &gt; 1]">を変更するだけtable-cell子要素または<xsl:for-each select="table:table-row[position() &gt; 1][table:table-cell[normalize-space()]]">を持つtable-row要素を処理します、あなたは述語を書く方法を学ぶために、XPathのチュートリアルを開始する必要があると思います子要素。

スプレッドシートアプリケーションのスクリーンショットから、入力XMLデータの正しい条件はわかりませんが、自分でXMLを見て、うまくいけばコードを適応させることができます。

+0

お返事ありがとうございます。残念ながら、最初の例では出力が変更されず、2番目の例ではエクスポート時にエラーが発生しましたが、XPath述語を調べます。 –

+0

Nvm、2番目の例では閉じ括弧しかありません。追加すると問題が解決します!ありがとうございました! [編集:不在括弧が今追加されたので、この回答の2番目の例は問題を正確に解決します] –

関連する問題