以文本方式查看主题

-  中文XML论坛 - 专业的XML技术讨论区  (http://bbs.xml.org.cn/index.asp)
--  『 XSL/XSLT/XSL-FO/CSS 』  (http://bbs.xml.org.cn/list.asp?boardid=8)
----  如何解决固定长度的换行问题  (http://bbs.xml.org.cn/dispbbs.asp?boardid=8&rootid=&id=47061)


--  作者:pipif_l
--  发布时间:5/18/2007 5:25:00 AM

--  如何解决固定长度的换行问题
请教一下大侠:

如何解决固定长度的文本输出问题
例如: 有一个一串字符
"Home and Travel insurance products are provided by a number of carefully selected insurance partners."

一行只能输出30个字符. 而且一个单词必须输出完整. 中间不能换行.
结果为: Home and Travel insurance
        Products are provided by a
        number of carefully selected
        insurance partners.


--  作者:lhsunrice
--  发布时间:5/18/2007 10:51:00 AM

--  
把文字两端加上<span>标签

I made a mistake....
Never mind..........................

[此贴子已经被作者于2007-5-18 11:44:34编辑过]

--  作者:Qr
--  发布时间:5/18/2007 11:21:00 AM

--  
可以通过递归来实现,给你个思路吧:每递归一次取一个单词,将其组合,判断长度。
只是偶最讨厌XSL中的递归,就不给代码了,此前曾写过一个类似的示例,可以参考一下:http://blogger.org.cn/blog/more.asp?name=Qr&id=21784


--  作者:pipif_l
--  发布时间:5/19/2007 4:15:00 AM

--  
请帮我看看,我写了code但是为什么没有显示?

结果应该是:

Simon is
an
engineer


<!---------------------Try.xml------------>
<?xml version="1.0" encoding="UTF-8"?>
<?xml:stylesheet type="text/xsl" href="try.xsl" ?>
<data>
 <Record>
  <Totals>
   <Row>
    <first_name>Simon</first_name>
    <Last_name></Last_name>
    <Salary>18,500</Salary>
    <Description>Simon is an engineer</Description>
   </Row>
   <Row>
    <first_name>Philip</first_name>
    <Last_name>Smith</Last_name>
    <Salary>500</Salary>
    <Description>Philip is an doctor</Description>
   </Row>
  </Totals>
 </Record>
</data>


<!--------------------try.xsl--------------------------->
<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:fo="http://www.w3.org/1999/XSL/Format">

<xsl:variable name="pos" select="position()" />
<xsl:template match="/data" name="getMessage">
      
   <xsl:param name="Message1" select="/data/Record/Totals/Row[$pos]/Description" />
   <xsl:param name="Link" select="''" />
   <xsl:param name="MS" select="''"/>

       <xsl:for-each select="Record/Totals/Row[$pos]/Description">       
         
            <xsl:if test="string-length($Link) &lt; 8">
                    <xsl:call-template name="getMessage">
                        <xsl:with-param name="MS" select="substring-before($Message1,'')" />
                        <xsl:with-param name="Message1" select="substring-after($Message1,'')" />
                        <xsl:with-param name="Link" select="concat($Link,$MS)" />
                    </xsl:call-template>
        
            </xsl:if>
                <xsl:value-of select="$Link" />
          <xsl:if test="string-length($Link) &gt; 8 or string-length($Link) = 8">
                 <xsl:value-of select="$Link" />
                  <xsl:text> </xsl:text>           
            </xsl:if>
        </xsl:for-each>
          
</xsl:template>
</xsl:stylesheet>


W 3 C h i n a ( since 2003 ) 旗 下 站 点
苏ICP备05006046号《全国人大常委会关于维护互联网安全的决定》《计算机信息网络国际联网安全保护管理办法》
62.500ms