Hi Sandra,

sandraB wrote:
Hi,
I'm facing another issue. I keep my solution but with yours it will be the
same problem:
I transform the text() node by replacing the '.' with '\u200B'. But how can
I call the <xsl:apply-templates> on the result (I can have some bold text
text or italic text text in a table cell) ?

I’m no XSLT specialist, but I’d play a bit more with XPath: “transform
every text node that is a descendant of a td element”:

    <xsl:template match="td//text()">
        <xsl:call-template name="addZeroWidthSpace" select="."/>
    </xsl:template>

If you have something like <td>Text with <b>bold</b> fragment</td>, the
above template will be called 3 times: on “Text with ”, “bold” and
“ fragment”.

In the template matching td you can replace the call to
addZeroWidthSpace with a simple <xsl:apply-templates/>.



My templates

<xsl:template match="td">
          <fo:table-cell overflow="visible" 
keep-together.within-column="always">
            <fo:block padding="0cm" white-space-collapse="false">
                <xsl:call-template name="addZeroWidthSpace" >
                                <xsl:with-param name="str" select="text()" />
                        </xsl:call-template>
            </fo:block>
           </fo:table-cell>
</xsl:template>
<xsl:template name="addZeroWidthSpace">
                <xsl:param name="str" />
                <xsl:variable 
name="hyphenation-character">&#x200B;</xsl:variable>
                <xsl:choose>
                        <xsl:when test="'.' and contains($str, '.')">

Why are you testing for '.'? It seems to me that you can simply do
    <xsl:when test="contains($str, '.')">

                               <!-- I need to apply another templates on
substring-before($str, '.')  -->
                                <xsl:value-of select="substring-before($str, '.')" 
/>.<xsl:value-of
select="$hyphenation-character" />
                                <xsl:call-template name="addZeroWidthSpace">
                                        <xsl:with-param name="str" 
select="substring-after($str, '.')" />
                                </xsl:call-template>
                        </xsl:when>
                        <xsl:otherwise>
                               <!-- I need to apply another templates here
-->
                                <xsl:value-of select="$str" />
                        </xsl:otherwise>
                </xsl:choose>
        </xsl:template>   

If you still have trouble getting your stylesheet right, I suggest you
to ask on the Mulberry Tech XSL list:
http://www.mulberrytech.com/xsl/xsl-list/index.html
You will have more chance to find XSLT specialists who will be able to
help you.


HTH,
Vincent

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to