グループをまとめるタグ その3

グループをまとめるタグ その1グループをまとめるタグ その2と色々試したが,結局以下のやり方で良いのではないかとやっと気付いた.あまり難しいことをやる必要はなかったようだ.

<?xml version="1.0" encoding="utf-8"?>
<root>
  <item>a</item>
  <item>b</item>
  <item>c</item>
</root>

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/root">
    <dl>
      <xsl:apply-templates select="item"/>
    </dl>
  </xsl:template>

  <xsl:template match="item">
    <dt><xsl:value-of select="self::node()"/></dt>
  </xsl:template>
</xsl:stylesheet>

item要素がある場合にはだけdlタグも出力したい場合には,item要素の有無を判定すればよい.

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:template match="/root">
    <xsl:if test="item">
      <dl>
        <xsl:apply-templates select="item"/>
      </dl>
    </xsl:if>
  </xsl:template>

  <xsl:template match="item">
    <dt><xsl:value-of select="self::node()"/></dt>
  </xsl:template>
</xsl:stylesheet>