最近、for each ループを適用し、「and」キーワードを使用して文字列を連結する必要があるケースに遭遇しました。以下は、私の xml ドキュメントの一部です。
<?xml version="1.0" encoding="utf-8"?>
<case.ref.no.group>
<case.ref.no>
<prefix>Civil Appeal</prefix>
<number>W-02-887</number>
<year>2008</year>
</case.ref.no>
<case.ref.no>
<prefix>Civil Appeal</prefix>
<number>W-02-888</number>
<year>2008</year>
</case.ref.no>
</case.ref.no.group>
そして、以下のxsltを試しました。
<xsl:template match="case.ref.no.group">
<xsl:variable name="pre">
<section class="sect2">
<xsl:text disable-output-escaping="yes">Court of Appeal</xsl:text>
</section>
</xsl:variable>
<xsl:variable name="tex">
<xsl:value-of select="./case.ref.no/prefix"/>
</xsl:variable>
<xsl:variable name="iter">
<xsl:value-of select="./case.ref.no/number"/>
<xsl:if test="following::case.ref.no/number">;</xsl:if>
</xsl:variable>
<xsl:variable name="year">
<xsl:value-of select="./case.ref.no/year"/>
</xsl:variable>
<div class="para">
<xsl:value-of select="concat($pre,' – ',$tex,' Nos. ',$iter,'-',$year)"/>
</div>
</xsl:template>
実行しようとすると、以下の出力が表示されます。
控訴裁判所 – 民事控訴番号 W-02-887 2008
しかし、私はそれが以下のようになりたいです。
控訴裁判所 – 民事控訴番号 W-02-887-2008 および W-02-888-2008
どうすればこれを達成できるか教えてください。私はxslt 1.0でこれをやっています。
ありがとう