(1) Option1 (テンプレート) が空白 (主に rec1 & 5) を生成するのに、Option2 (ForEach) は生成しないのはなぜですか?
(2) 可能であれば、Option1 をコーディングして結果の空白を削除するにはどうすればよいですか?
前提条件: XSLT v1.、テスト用の XMLPad/Stylus、MSXML4 の使用。
複数の TSV 出力ファイルを作成するために、複数の「タイプ」選択基準を使用して、より大きく、より複雑な XML 入力ファイル (要素/属性の混合) を処理することに取り組んでいます。多くの参考文献は、テンプレートを使用することが好ましい方法であることを示しているようです。現在、match を使用すると、メッセージ キューにプッシュされる空白が多すぎます。
XML:
<main>
<event>
<event_type>Bike</event_type>
<date>2012-02-05</date>
</event>
<event>
<event_type>Run</event_type>
<date>2012-02-06</date>
</event>
<event>
<event_type>Swim</event_type>
<date>2012-02-07</date>
</event>
<event>
<event_type>Run</event_type>
<date>2012-02-08</date>
</event>
<event>
<event_type>Bike</event_type>
<date>2012-02-09</date>
</event>
</main>
XSL:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="text"/>
<xsl:variable name="tab" select="'	'" />
<xsl:template match="@*|text()"/>
<xsl:template match="/">
<xsl:text/>event<xsl:value-of select="$tab"/>
<xsl:text/>date<xsl:value-of select="$tab"/>
<xsl:apply-templates/>
</xsl:template>
<!-- OPTION1 -->
<xsl:template match="event[event_type='Bike']"><xsl:text>
</xsl:text>
<xsl:value-of select="event_type"/><xsl:value-of select="$tab"/>
<xsl:value-of select="date"/>
</xsl:template>
<!-- OPTION2 -->
<!--<xsl:template match="@*|node()">
<xsl:for-each select="event[event_type='Bike']"><xsl:text>
</xsl:text>
<xsl:value-of select="event_type"/><xsl:value-of select="$tab"/>
<xsl:value-of select="date"/>
</xsl:for-each>
</xsl:template>-->
</xsl:stylesheet>
出力 - Opt1 テンプレート(まだ写真を投稿できません。... は空白です)
イベント...日付......
バイク....2012-02-05........
バイク....2012-02-09.
出力 - Opt2 ForEach
イベント...日付.....
自転車....2012-02-05
自転車....2012-02-09