Xslt 以无关方式生成clrf

Xslt 以无关方式生成clrf,xslt,xslt-1.0,Xslt,Xslt 1.0,弦长约为120的 下面是我的消息字符串: CID_Ultimate_Ben_Details=pabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumar 例:消息长度为140 所需输出为: 1 to 35 chars in first line 36 t0 7

弦长约为120的

下面是我的消息字符串: CID_Ultimate_Ben_Details=pabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumar

例:消息长度为140

所需输出为:

1 to 35 chars in first line
36 t0 70 chars in second line
71 to 105 chars in third line
106 to 140 in fourth line
这里是我的xslt逻辑:

<xsl:if test ="./CID_Ultimate_Ben_Details != '' " >
                <xsl:if test ="string-length(./CID_Ultimate_Ben_Details) != '11' and string-length(./CID_Ultimate_Ben_Details) != '8' ">
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 1">
                        <xsl:value-of select="concat(':58D:',substring(./CID_Ultimate_Ben_Details,1,35))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 35">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,36,70))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 70">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,71,105))" />
                    </xsl:if>
                    <xsl:if test="string-length(./CID_Ultimate_Ben_Details) &gt; 105">
                        <xsl:value-of select="concat('&#10;',substring(./CID_Ultimate_Ben_Details,106,140))" />
                    </xsl:if>
                </xsl:if>

                <xsl:text>&#13;</xsl:text >
            </xsl:if>
所需输出为: :58D:pabbisettishanmukhpraveenkumarpabbi settishanmukhpraveenkumarpabbisetti Shanmukhpraveenkumarpabisettishann ukhpraveenkumar

但现在,上述逻辑输出如下:

:58D:pabbisettishanmukhpraveenkumarpabbi SettishanMukhpraveenkumarpabisettishanMukhpraveenkumarpabisettishanm Shanmukhpraveenkumarpabisetti Shanmukhpraveenkumar ukhpraveenkumar

为什么它会以不考虑的方式生成clrf。有人能建议我获得所需的输出吗?

这里有一个正确且通用的方法,适用于任何文本长度和输出行数的XSLT 1.0解决方案XSLT 2.0解决方案非常基本:

<xsl:stylesheet version="1.0"
 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
 <xsl:output method="text"/>
 <xsl:strip-space elements="*"/>

 <xsl:param name="pmsgLength" select="140"/>
 <xsl:param name="pnumLines" select="4"/>

 <xsl:variable name="vmaxLineLength" select=
  "ceiling($pmsgLength div $pnumLines)"/>

 <xsl:template match="/*/text()" name="split">
  <xsl:param name="pText" select="."/>
  <xsl:param name="pnextLines" select="$pnumLines"/>
  <xsl:param name="pHead" select="':58D:'"/>

    <xsl:if test="$pnextLines">
     <xsl:value-of select=
      "concat('&#xA;',$pHead, substring($pText, 1, $vmaxLineLength))"/>

      <xsl:call-template name="split">
       <xsl:with-param name="pText" select="substring($pText, $vmaxLineLength+1)"/>
       <xsl:with-param name="pnextLines" select="$pnextLines -1"/>
       <xsl:with-param name="pHead" select="''"/>
      </xsl:call-template>
    </xsl:if>
 </xsl:template>
</xsl:stylesheet>
substring的第三个参数是所需的长度,而不是Java中的结束位置

<t>pabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumarpabbisettishanmukhpraveenkumar</t>
:58D:pabbisettishanmukhpraveenkumarpabbi
settishanmukhpraveenkumarpabbisetti
shanmukhpraveenkumarpabbisettishanm
ukhpraveenkumar