Your approach should work, but you must make sure that you replace all
values '6' to '3'. Note that you can't do a global find/replace as this
would influence some template names which contains the value '6' in their
name.
At first glance, without doing any extensive testing, the following works:
<xsl:variable name="author0">
<xsl:choose>
<xsl:when
test="string-length(msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Author/b:Main/b:Corporate)
<xsl:value-of
select="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Author/b:Main/b:Corporate"
/>
</xsl:when>
<xsl
therwise>
<xsl:variable name="cAuthors">
<xsl:value-of
select="count(msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Author/b:Main/b:NameList/b
erson)"
/>
</xsl:variable>
<xsl:for-each
select="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:Source/b:Author/b:Main/b:NameList/b
erson">
<xsl:choose>
<xsl:when test="position() > 3 or (position() > 1 and $cAuthors >
3)">
</xsl:when>
<xsl:when test="position() = 1">
<xsl:call-template name="formatNameCore">
<xsl:with-param name="FML">
<xsl:choose>
<xsl:when
test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:NonUniqueLastName">
<xsl:call-template
name="templ_prop_APA_CitationLong_FML"/>
</xsl:when>
<xsl
therwise>
<xsl:call-template
name="templ_prop_APA_CitationShort_FML"/>
</xsl
therwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="FM">
<xsl:choose>
<xsl:when
test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:NonUniqueLastName">
<xsl:call-template
name="templ_prop_APA_CitationLong_FM"/>
</xsl:when>
<xsl
therwise>
<xsl:call-template
name="templ_prop_APA_CitationShort_FM"/>
</xsl
therwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="ML">
<xsl:choose>
<xsl:when
test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:NonUniqueLastName">
<xsl:call-template
name="templ_prop_APA_CitationLong_ML"/>
</xsl:when>
<xsl
therwise>
<xsl:call-template
name="templ_prop_APA_CitationShort_ML"/>
</xsl
therwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="FL">
<xsl:choose>
<xsl:when
test="msxsl:node-set($ListPopulatedWithMain)/b:Citation/b:NonUniqueLastName">
<xsl:call-template
name="templ_prop_APA_CitationLong_FL"/>
</xsl:when>
<xsl
therwise>
<xsl:call-template
name="templ_prop_APA_CitationShort_FL"/>
</xsl
therwise>
</xsl:choose>
</xsl:with-param>
<xsl:with-param name="upperLast">no</xsl:with-param>
<xsl:with-param name="withDot">no</xsl:with-param>
</xsl:call-template>
</xsl:when>
<xsl:when test="position() > 1">
<xsl:call-template name="formatNameCore">
<xsl:with-param name="FML">
<xsl:call-template name="templ_prop_APA_CitationShort_FML"/>
</xsl:with-param>
<xsl:with-param name="FM">
<xsl:call-template name="templ_prop_APA_CitationShort_FM"/>
</xsl:with-param>
<xsl:with-param name="ML">
<xsl:call-template name="templ_prop_APA_CitationShort_ML"/>
</xsl:with-param>
<xsl:with-param name="FL">
<xsl:call-template name="templ_prop_APA_CitationShort_FL"/>
</xsl:with-param>
<xsl:with-param name="upperLast">no</xsl:with-param>
<xsl:with-param name="withDot">no</xsl:with-param>
</xsl:call-template>
</xsl:when>
</xsl:choose>
<xsl:choose>
<xsl:when test="(position() = 1 and $cAuthors > 3)">
<!--<xsl:call-template name="templ_prop_ListSeparator"/>-->
<xsl:text> </xsl:text>
<xsl:call-template name="templ_str_AndOthersUnCap"/>
</xsl:when>
<xsl:when test="position() > 1 and $cAuthors > 3">
</xsl:when>
<xsl:when test="($cAuthors - 1 = position() and ($cAuthors = 2))">
<xsl:call-template name="templ_prop_Space"/>
<xsl:call-template name="templ_prop_APA_BeforeLastAuthor"/>
<xsl:call-template name="templ_prop_Space"/>
</xsl:when>
<xsl:when test="($cAuthors - 1 = position() and ($cAuthors > 2))">
<xsl:call-template name="templ_prop_AuthorsSeparator"/>
<xsl:variable name="noAndBeforeLastAuthor">
<xsl:call-template name="templ_prop_NoAndBeforeLastAuthor"/>
</xsl:variable>
<xsl:if test="$noAndBeforeLastAuthor != 'yes'">
<xsl:call-template name="templ_prop_APA_BeforeLastAuthor"/>
<xsl:call-template name="templ_prop_Space"/>
</xsl:if>
</xsl:when>
<xsl:when test="$cAuthors > position() and 3 > position() ">
<xsl:call-template name="templ_prop_AuthorsSeparator"/>
</xsl:when>
</xsl:choose>
</xsl:for-each>
</xsl
therwise>
</xsl:choose>
</xsl:variable>
Yves