Xml 如何每35个字符为每个nn生成一个字符串中的clrf

Xml 如何每35个字符为每个nn生成一个字符串中的clrf,xml,xslt,Xml,Xslt,假设我的消息字符串长度约为140(至少超过35个字符)。 我需要使用换行来拆分我的字符串 例:消息长度为140 所需输出为: 第一行1到35个字符 第二行36至70个字符 第三行71至105个字符 第四行106至140 有谁能给我一些逻辑建议吗?您是否尝试过每35个字符连接一个“\r\n”。只要使用每次增加35的循环计数器,只要计数器小于字符串的长度,就可以使用子字符串和连接。您是否尝试过每35个字符简单地连接“\r\n”。只要使用循环计数器,每次增加35,只要计数器小于字符串的长度,并且只

假设我的消息字符串长度约为140(至少超过35个字符)。 我需要使用换行来拆分我的字符串

例:消息长度为140

所需输出为:

  • 第一行1到35个字符
  • 第二行36至70个字符
  • 第三行71至105个字符
  • 第四行106至140

有谁能给我一些逻辑建议吗?

您是否尝试过每35个字符连接一个“\r\n”。只要使用每次增加35的循环计数器,只要计数器小于字符串的长度,就可以使用子字符串和连接。

您是否尝试过每35个字符简单地连接“\r\n”。只要使用循环计数器,每次增加35,只要计数器小于字符串的长度,并且只使用子字符串和连接。

Wikipedia上有一个描述算法的条目:


维基百科上有一个描述算法的条目:


这是一个递归模板,具有可配置的行长参数和要附加到末尾的字符参数

<xsl:template name="word-wrap">
   <xsl:param name="str"/>
   <xsl:param name="line-length" select="35"/>
   <xsl:param name="line-ending" select="'&#xA;'"/>

   <xsl:choose>
      <xsl:when test="string-length($str)&gt;$line-length">

         <xsl:value-of select="substring($str,0,$line-length)"/>
         <xsl:value-of select="$line-ending"/>

         <xsl:call-template name="word-wrap">
            <xsl:with-param name="str" select="substring($str,$line-length)" />
            <xsl:with-param name="line-length" select="$line-length" />
            <xsl:with-param name="line-ending" select="$line-ending" />
         </xsl:call-template>

      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$str"/>
      </xsl:otherwise>

   </xsl:choose>

</xsl:template>

注意:这没有任何逻辑来解释拆分的单词边界或连字符。

这是一个递归模板,具有可配置的行长参数和要附加到末尾的字符

<xsl:template name="word-wrap">
   <xsl:param name="str"/>
   <xsl:param name="line-length" select="35"/>
   <xsl:param name="line-ending" select="'&#xA;'"/>

   <xsl:choose>
      <xsl:when test="string-length($str)&gt;$line-length">

         <xsl:value-of select="substring($str,0,$line-length)"/>
         <xsl:value-of select="$line-ending"/>

         <xsl:call-template name="word-wrap">
            <xsl:with-param name="str" select="substring($str,$line-length)" />
            <xsl:with-param name="line-length" select="$line-length" />
            <xsl:with-param name="line-ending" select="$line-ending" />
         </xsl:call-template>

      </xsl:when>
      <xsl:otherwise>
         <xsl:value-of select="$str"/>
      </xsl:otherwise>

   </xsl:choose>

</xsl:template>

注意:这没有任何逻辑来解释单词边界或拆分单词的连字号。

仅使用固定行,您可以硬编码:

<xsl:template match="whatever">
  <xsl:value-of select="substring(.,1,35)" />
  <xsl:if test="string-length(.) &gt; 35"><xsl:value-of select="concat('&#10;',substring(.,36,70))" /></xsl:if>
  <xsl:if test="string-length(.) &gt; 70"><xsl:value-of select="concat('&#10;',substring(.,71,105))" /></xsl:if>
  <xsl:if test="string-length(.) &gt; 105"><xsl:value-of select="concat('&#10;',substring(.,106,140))" /></xsl:if>
</xsl:template>


诚然,它很粗糙,但很有效。

只需固定行,就可以硬编码:

<xsl:template match="whatever">
  <xsl:value-of select="substring(.,1,35)" />
  <xsl:if test="string-length(.) &gt; 35"><xsl:value-of select="concat('&#10;',substring(.,36,70))" /></xsl:if>
  <xsl:if test="string-length(.) &gt; 70"><xsl:value-of select="concat('&#10;',substring(.,71,105))" /></xsl:if>
  <xsl:if test="string-length(.) &gt; 105"><xsl:value-of select="concat('&#10;',substring(.,106,140))" /></xsl:if>
</xsl:template>

诚然,这很粗糙,但很有效