• Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 569
  • Last Modified:

xsl break word

i have 2 columns in a row.  Second column holds text. Text can be sentence or a single long word. IIf it is a single long word it tries to occupy first cell. I want the long word to break up and wrap.
please let me know if you have any suggestions.
0
mahalasa
Asked:
mahalasa
  • 16
  • 9
  • 2
  • +1
1 Solution
 
HainKurtSr. System AnalystCommented:
wrap the second one in "a long text here bla bla bla...."
0
 
mahalasaAuthor Commented:
i dint get u..pls elaborat
0
 
Geert BormansInformation ArchitectCommented:
There is a multitude of options.
So I have a couple of questions for you:
- XSLT1 or XSLT2
- Which XSLT processor, can that change?
- How do you want to break, every n characters, is n a parameter, how do you intend to tell the size based on the cell width?
- HTML or PDF, or... have you considered CSS wrapping options such as word-wrap (IE only)
0
Free Tool: Port Scanner

Check which ports are open to the outside world. Helps make sure that your firewall rules are working as intended.

One of a set of tools we are providing to everyone as a way of saying thank you for being a part of the community.

 
kmartin7Commented:
Is this XSL:FO?
0
 
mahalasaAuthor Commented:
basically pdf is generated. Yes i have tried word wrap no use.
0
 
mahalasaAuthor Commented:
yes xsl;block
0
 
mahalasaAuthor Commented:
any expert in xsl?
0
 
Geert BormansInformation ArchitectCommented:
If it is xsl:fo, and it is long words and you processor can't deal with hyphenation correctly, then I assume that the best alternative you have is adding a zerowidth space between each letter
easily done in XSLT2, some recursion in XSLT1.
Would that work for you?
I assume you have tried the wrap options of FO
0
 
mahalasaAuthor Commented:
i have seen that 24 characters can fit in without issues. i need to wrap text to next line for word greater than 24 characters.
0
 
mahalasaAuthor Commented:
wrap option works only for sentence.
0
 
Geert BormansInformation ArchitectCommented:
> any expert in xsl?

well, you have two here already?
Not enough?
Don't expect miracles if you ask half questions
0
 
mahalasaAuthor Commented:
how do we add zero width space?
0
 
mahalasaAuthor Commented:
:-)
0
 
Geert BormansInformation ArchitectCommented:
​
0
 
mahalasaAuthor Commented:
wat would this zero width space do?
0
 
Geert BormansInformation ArchitectCommented:
well, visually you would still have one word, so your FO processor will not show the character.
For the processor however the word is no longer a word, but a sequence of characters with spaces in between, so wrapping will work as you please
0
 
mahalasaAuthor Commented:
This seems like resolving my issue. can you give me an example to use it with code snippet.

Thank a lot :-)
0
 
kmartin7Commented:
Depending on FO processor, have you tried placing the text within each cell within a block, then use the 'wrap-option" attribute set to "wrap"?
0
 
mahalasaAuthor Commented:
yes, its already within a block :-(
0
 
Geert BormansInformation ArchitectCommented:
Which processor have you used?
Are you sure you have exposed the wrap options in the block?
0
 
mahalasaAuthor Commented:
i am not sure abt the processor :-( i am new to xsl . yes i have tried wrap option. my pdf work absolutely fine for long sentence with proper wrapping
0
 
mahalasaAuthor Commented:
can u give me a code snippet which uses zero width spacing
0
 
Geert BormansInformation ArchitectCommented:
there are two processors, one for XSLT and one for XSL:FO
It makes sense that you know both of the processor brands and possibilities
Processors have specific implementations, so it can bite you if you don't have a clue

I will assume you have XSLT1 for the zero width stuff
0
 
mahalasaAuthor Commented:
Hi Gertone, i need one more help
do u know abt itext?
0
 
mahalasaAuthor Commented:
any code snippet using it would be really helpful
0
 
Geert BormansInformation ArchitectCommented:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   version="1.0">
    <xsl:template match="/">
        <xsl:variable name="test-string">
            <xsl:text>thisisaverylongwordandmyhyphenatorchoquesonit</xsl:text>
        </xsl:variable>
        <block>
            <xsl:call-template name="add-zero-width">
                <xsl:with-param name="str" select="$test-string"/>
            </xsl:call-template>
        </block>
    </xsl:template>
    <xsl:template name="add-zero-width">
        <xsl:param name="str"/>
        <xsl:value-of select="substring($str, 1, 1)"/>
        <xsl:text>&#8203;</xsl:text>
        <xsl:if test="string-length($str) > 1">
            <xsl:call-template name="add-zero-width">
                <xsl:with-param name="str" select="substring($str, 2)"/>
            </xsl:call-template>
        </xsl:if>
    </xsl:template>
</xsl:stylesheet>

Open in new window

0
 
mahalasaAuthor Commented:
Great response. I am really thankful.
0
 
Geert BormansInformation ArchitectCommented:
welcome
0

Featured Post

Take Control of Web Hosting For Your Clients

As a web developer or IT admin, successfully managing multiple client accounts can be challenging. In this webinar we will look at the tools provided by Media Temple and Plesk to make managing your clients’ hosting easier.

  • 16
  • 9
  • 2
  • +1
Tackle projects and never again get stuck behind a technical roadblock.
Join Now