次の形式のxmlファイルからcsvを作成しようとしています。
<?xml version="1.0" encoding="UTF-8"?>
<Envelope>
<Header>
<env:MessageSentDateTime>2012-09-19T09:50:04Z</env:MessageSentDateTime>
<env:MessageSequenceNumber>856432</env:MessageSequenceNumber>
</Header>
<Body>
<Data>
<Data:ID>
<Data:AODB>9346280</Data:AODB>
<Data:Ref>
<common:Code>HJ</common:Code>
<common:num>8113</common:num>
</Data:Ref>
</Data:ID>
... Continues like this, no set number of nodes, parts or AnotherParts
</Body>
Second message starting with <Header> ending with </Body>,
will be more than 2 in practice
</Envelope>
csvファイルの/Bodyタグに改行を入れたいのですが、これは新しいメッセージを示しているためです。メッセージが混在するため、ノードの数、パーツの数が異なり、ボディパーツに一貫したエンドノードがありません。さらに、テキストを含まないノードがありますが、それでもコンマが必要です。
これまでのところ:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:strip-space elements="*"/>
<xsl:template match="*[not(*)]">
<xsl:value-of select="normalize-space(.)"/>
<xsl:text>,</xsl:text>
</xsl:template>
<xsl:template match="Body[last()]">
<xsl:value-of select="normalize-space(.)"/>
<xsl:text> </xsl:text>
</xsl:template>
</xsl:stylesheet>
また、Bodyの最後の情報の後にコンマを追加します。そのコンマを改行に置き換えたいのですが、これを行う簡単な方法はありますか?
よろしく、デビッド