Subject: RE: [xsl] String Manipulation - Distinguishing alphas and numeric s in a string From: "TEA Lanham, Kevin" <Klanham@xxxxxxxxxxxxxx> Date: Thu, 31 Oct 2002 16:16:52 -0600 |
Conal, Thanks! That worked. Here's the result... XML ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <para>The completion chemical is <chemical>H2OClF3H4</chemical> for this test.</para> XSL ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <xsl:template match="chemical"> <xsl:variable name="this_chemical" select="."/> <xsl:call-template name="chemical_formater"> <xsl:with-param name="formula" select="."/> </xsl:call-template> </xsl:template> <xsl:template name="chemical_formater"> <xsl:param name="formula"/> <xsl:variable name="each_char" select="substring($formula,1,1)"/> <xsl:choose> <xsl:when test="$each_char='1' or $each_char='2' or $each_char='3' or $each_char='4' or $each_char='5' or $each_char='6' or $each_char='7' or $each_char='8' or $each_char='9' or $each_char='0'"> <fo:inline baseline-shift="sub" font-size="75%"> <xsl:value-of select="$each_char"/> </fo:inline> </xsl:when> <xsl:otherwise> <fo:inline baseline-shift="normal"> <xsl:value-of select="$each_char"/> </fo:inline> </xsl:otherwise> </xsl:choose> <xsl:if test="substring-after($formula,$each_char)!=''"> <xsl:call-template name="chemical_formater"> <xsl:with-param name="formula"> <xsl:value-of select="substring-after($formula,$each_char)"/> </xsl:with-param> </xsl:call-template> </xsl:if> </xsl:template> XSL-FO ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ <fo:block> The completion chemical is <fo:inline baseline-shift="normal">H</fo:inline> <fo:inline baseline-shift="sub" font-size="75%">2</fo:inline> <fo:inline baseline-shift="normal">O</fo:inline> <fo:inline baseline-shift="normal">C</fo:inline> <fo:inline baseline-shift="normal">l</fo:inline> <fo:inline baseline-shift="normal">F</fo:inline> <fo:inline baseline-shift="sub" font-size="75%">3</fo:inline> <fo:inline baseline-shift="normal">H</fo:inline> <fo:inline baseline-shift="sub" font-size="75%">4</fo:inline> for this test.</fo:block> I appreciate the push through the mental block! On to the next challenge. Kevin -----Original Message----- From: Conal Tuohy [mailto:conalt@xxxxxxxxxxxxxxx] Sent: Wednesday, October 30, 2002 5:08 PM To: xsl-list@xxxxxxxxxxxxxxxxxxxxxx Subject: RE: [xsl] String Manipulation - Distinguishing alphas and numerics in a string You need to write a template with a name attribute, and call it to process the string. Pass the string to it as a parameter. This template would handle the first part of the string, then if there's any string remaining, it should call itself, passing itself the remainder of the string. Kevin wrote: > Does anyone know how to do this? (the chemistry is not the > issue, I realize > this is a bogus combination) > > > XML source: > <para>candybars are made of <chemical>H20ClF3</chemical>.</para> > > > XSL needed????? > <xsl:template match="chemical"> > <xsl:variable name="this_chemical" select="."/> > > <!-- This is the part I'm stuck on. How do I process the string? The > translate function only wants to replace something. How do I > walk through > the string and wrap each number with the FO for subscript? --> > > </xsl:template> > > XSL-FO desired: > > <fo:block>water is made of H<fo:inline baseline-shift="sub" > >2</fo:inline>OClF<fo:inline baseline-shift="sub" > >3</fo:inline>.</fo:block> XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
RE: [xsl] Re: variables in XSLT, Michael Kay | Thread | [xsl] Reprocessing XHTML with XSLT, Peter Flynn |
RE: [xsl] Delete XML Node, Wendell Piez | Date | [xsl] Reprocessing XHTML with XSLT, Peter Flynn |
Month |