XSLT XML
< 2.2.0
<xsl:template match="Directors">
  <xsl:if test="count(Director)>0">
    <xsl:text>Director</xsl:text>
    <xsl:if test="count(Director)>1">
      <xsl:text>s</xsl:text>
    </xsl:if>
    <xsl:text>: </xsl:text>
    <xsl:for-each select="Director">
      <xsl:value-of select="FirstName"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="LastName"/>
      <xsl:if test="not (position()=last())">
        <xsl:text>, </xsl:text>
      </xsl:if>
    </xsl:for-each>
  </xsl:if>
</xsl:template>
<DVD>
  <Directors>
    <Director>
      <FirstName>Jules</FirstName>
      <LastName>Bass</LastName>
    </Director>
    <Director>
      <FirstName>Athur</FirstName>
      <LastName>Rankin jr.</LastName>
    </Director>
  </Directors>
</DVD>
2.3.1 >
<xsl:template match="Credits">
  <xsl:if test="count(Credit[CreditSubtype = 'Director'])>0">
    <xsl:text>Director</xsl:text>
    <xsl:if test="count(Credit[CreditSubtype = 'Director'])>1">
      <xsl:text>s</xsl:text>
    </xsl:if>
    <xsl:text>: </xsl:text>
    <xsl:for-each select="Credit[CreditSubtype = 'Director']">
    <xsl:if test="position() <= 3">
      <xsl:value-of select="FirstName"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="LastName"/>
      <xsl:if test="not (position()=last())">
        <xsl:text>, </xsl:text>
      </xsl:if>
    </xsl:if>
    </xsl:for-each>
    <xsl:if test="count(Credit[CreditSubtype = 'Director'])>3">
    <xsl:text>other</xsl:text>
    </xsl:if>
  </xsl:if>
</xsl:template>
<DVD>
  <Credits>
    <Credit>
      <FirstName>Theo</FirstName>
      <LastName>Mezger</LastName>
      <CreditType>Direction</CreditType>
      <CreditSubtype>Director</CreditSubtype>
    </Credit>
    <Credit>
      <FirstName>Rolf</FirstName>
      <LastName>Honold</LastName>
      <CreditType>Writing</CreditType>
      <CreditSubtype>Writer</CreditSubtype>
    </Credit>
    ...
  </Credits>
</DVD>
3.0.0 >
<xsl:template match="Credits">
<xsl:if test="count(Credit[@CreditSubtype = 'Director'])>0">
    <xsl:text>Director</xsl:text>
    <xsl:if test="count(Credit[@CreditSubtype = 'Director'])>1">
      <xsl:text>s</xsl:text>
    </xsl:if>
    <xsl:text>: </xsl:text>
    <xsl:for-each select="Credit[@CreditSubtype = 'Director']">
    <xsl:if test="position() <= 3">
      <xsl:value-of select="@FirstName"/>
      <xsl:text> </xsl:text>
      <xsl:value-of select="@LastName"/>
      <xsl:if test="not (position()=last())">
        <xsl:text>, </xsl:text>
      </xsl:if>
    </xsl:if>
    </xsl:for-each>
    <xsl:if test="count(Credit[@CreditSubtype = 'Director'])>3">
    <xsl:text>other</xsl:text>
    </xsl:if>
  </xsl:if>
</xsl:template>
<DVD>
  <Credits>
    <Credit FirstName="Theo" MiddleName="" LastName="Mezger" BirthYear="0" CreditType="Direction" CreditSubtype="Director" CreditedAs=""/>
    <Credit FirstName="Rolf" MiddleName="" LastName="Honold" BirthYear="0" CreditType="Writing" CreditSubtype="Writer" CreditedAs=""/>
    ...
  </Credits>
</DVD>