これは、非再帰的で純粋なXSLT1.0ソリューションです。
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output omit-xml-declaration="yes" indent="yes"/>
 <xsl:strip-space elements="*"/>
 <xsl:variable name="vUpper" select="'ABCDEFGHIJKLMNOPQRSTUVWXYZ'"/>
 <xsl:variable name="vLower" select="'abcdefghijklmnopqrstuvwxyz'"/>
 <xsl:variable name="vDigits" select="'0123456789'"/>
 <xsl:variable name="vAlhanum" select="concat($vLower, $vUpper, $vDigits)"/>
 <xsl:template match="comments">
   <xsl:param name="pText" select="."/>
     <xsl:choose>
       <xsl:when test="not(string-length($pText) > 120)">
         <xsl:value-of select="$pText"/>
       </xsl:when>
         <xsl:otherwise>
           <xsl:variable name="vTruncated" select="substring($pText, 1, 121)"/>
             <xsl:variable name="vPunct" 
                           select="translate($vTruncated, $vAlhanum, '')"/>
           <xsl:for-each select=
           "(document('')//node() | document('')//@* | document('')//namespace::*)
                           [not(position() > 121)]">
             <xsl:variable name="vPos" select="122 - position()"/>
             <xsl:variable name="vRemaining" select="substring($vTruncated, $vPos+1)"/>
             <xsl:if test=
              "contains($vPunct, substring($vTruncated, $vPos, 1))
              and
               contains($vAlhanum, substring($vTruncated, $vPos -1, 1))
              and
                 string-length(translate($vRemaining, $vPunct, ''))
                         = string-length($vRemaining)
              ">
              <xsl:value-of select="substring($vTruncated, 1, $vPos -1)"/>
             </xsl:if>
           </xsl:for-each>
      </xsl:otherwise>
     </xsl:choose>
 </xsl:template>
 <xsl:template match="text()"/>
</xsl:stylesheet>
この変換が次のXMLドキュメントに適用される場合:
<news>
   <title>Story title</title>
    <comments> story gist here..a couple of sentences. Many more sentences ...
even some more text with lots of meaning and sense aaand a lot of humor. </comments>
    <content> actualy story </content>
</news>
必要な正しい結果が生成されます:
 story gist here..a couple of sentences. Many more sentences ...
even some more text with lots of meaning and sense