Go Premium for a chance to win a PS4. Enter to Win

x
  • Status: Solved
  • Priority: Medium
  • Security: Public
  • Views: 567
  • 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 BormansCommented:
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
What does it mean to be "Always On"?

Is your cloud always on? With an Always On cloud you won't have to worry about downtime for maintenance or software application code updates, ensuring that your bottom line isn't affected.

 
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 BormansCommented:
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 BormansCommented:
> 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 BormansCommented:
​
0
 
mahalasaAuthor Commented:
wat would this zero width space do?
0
 
Geert BormansCommented:
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 BormansCommented:
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 BormansCommented:
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 BormansCommented:

<?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 BormansCommented:
welcome
0

Featured Post

Concerto Cloud for Software Providers & ISVs

Can Concerto Cloud Services help you focus on evolving your application offerings, while delivering the best cloud experience to your customers? From DevOps to revenue models and customer support, the answer is yes!

Learn how Concerto can help you.

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