<xsl:choose> <xsl:when test="string-length(name) > 5"> <xsl:value-of select="substring(name, 1, 5)"/>... </xsl:when> <xsl:otherwise> <xsl:value-of select="name"/> </xsl:otherwise> </xsl:choose>
yours Christoph Gaffga [EMAIL PROTECTED] ----- Original Message ----- From: "Niket Anand" <[EMAIL PROTECTED]> To: <[EMAIL PROTECTED]>; <[EMAIL PROTECTED]> Sent: Tuesday, May 28, 2002 7:15 AM Subject: XSL function to handle String > Hi Luca, > last time you really helped me out from the following problem.Thanks for > that. > This time I want to use a function in XSL such that it takes two parameters- > string and length. > such as > showName(String name, int length) > here I want to show name upto 5 character length, if name length is more > than 5 character then show "....." after 5 character such as > showName("Luca Morandini", 5) > then it should show Luca.... > I want to handle it in XSL only but not in XSP. so please help me such that > I can use this type of function in XSL and pass name in run time. > Can you send me an example for that? > Thanks for that. > Niket > ----- Original Message ----- > From: "Luca Morandini" <[EMAIL PROTECTED]> > To: <[EMAIL PROTECTED]> > Cc: <[EMAIL PROTECTED]> > Sent: Saturday, April 13, 2002 6:17 PM > Subject: RE: making tree like structure using XML,XSP,XSL > > > > Niket, > > > > here you are... > > > > SITEMAP.XMAP (fragment) > > <map:pipeline> > > <map:match pattern="hash.xml"> > > <map:generate src="documents/hashtable.xml"/> > > <map:transform src="stylesheets/hashtable.xsl"/> > > <map:serialize type="xml"/> > > </map:match> > > </map:pipeline> > > > > HASHTABLE.XML > > <?xml version="1.0"?> > > <page> > > <entry id="1" parentid="0"/> > > <entry id="2" parentid="0"/> > > <entry id="3" parentid="0"/> > > <entry id="4" parentid="0"/> > > <entry id="5" parentid="1"/> > > <entry id="6" parentid="1"/> > > <entry id="7" parentid="6"/> > > <entry id="8" parentid="7"/> > > <entry id="11" parentid="5"/> > > <entry id="9" parentid="2"/> > > <entry id="10" parentid="2"/> > > <entry id="12" parentid="5"/> > > </page> > > > > HASHTABLE.XSL > > <?xml version="1.0"?> > > <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" > > version="1.0"> > > > > <xsl:template match="page"> > > > > <!-- Starts the tree --> > > <xsl:element name="tree"> > > > > <xsl:apply-templates/> > > > > </xsl:element> > > > > </xsl:template> > > > > <!-- Selects main branches --> > > <xsl:template match="//entry[@parentid=0]"> > > > > <xsl:call-template name="process-branch"> > > <xsl:with-param name="id"><xsl:value-of select="@id"/></xsl:with-param> > > <xsl:with-param name="parentid"><xsl:value-of > > select="@parentid"/></xsl:with-param> > > </xsl:call-template> > > > > </xsl:template> > > > > <!-- Recursive function --> > > <xsl:template name="process-branch"> > > <xsl:param name="id"/> > > <xsl:param name="parentid"/> > > > > <xsl:choose> > > > > <!-- If element has no branches (i.e. is a leaf) --> > > <xsl:when test="count(//entry[@parentid=current()/@id])=0"> > > > > <!-- Writes the "leaf" element --> > > <xsl:element name="leaf"> > > <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> > > </xsl:element> > > > > </xsl:when> > > > > <!-- If element has branches --> > > <xsl:otherwise> > > > > <!-- Starts a "branch" element --> > > <xsl:element name="branch"> > > <xsl:attribute name="id"><xsl:value-of select="$id"/></xsl:attribute> > > > > <!-- For every branches of current branch --> > > <xsl:for-each select="//entry[@parentid=current()/@id]"> > > > > <!-- Recurse the branch processing --> > > <xsl:call-template name="process-branch"> > > <xsl:with-param name="id"><xsl:value-of > > select="@id"/></xsl:with-param> > > <xsl:with-param name="parentid"><xsl:value-of > > select="@parentid"/></xsl:with-param> > > </xsl:call-template> > > > > </xsl:for-each> > > > > </xsl:element> > > > > </xsl:otherwise> > > > > </xsl:choose> > > > > </xsl:template> > > > > </xsl:stylesheet> > > > > Best regards, > > > > --------------------------------------------- > > Luca Morandini > > GIS Consultant > > [EMAIL PROTECTED] > > http://utenti.tripod.it/lmorandini/index.html > > --------------------------------------------- > > > > -----Original Message----- > > From: Niket Anand [mailto:[EMAIL PROTECTED]] > > Sent: Friday, April 12, 2002 5:13 PM > > To: Niket Anand > > Subject: making tree like structure using XML,XSP,XSL > > > > > > Hi All, > > I have one function that connect to database and retrive data in form of > > Hashtable. > > My Hashtable may be like this. > > MsgID ParentID > > 1 0 > > 2 0 > > 3 0 > > 4 0 > > 5 1 > > 6 1 > > 7 6 > > 8 7 > > 9 2 > > 10 2 > > 11 5 > > 12 5 > > > > Tree structure would be like this based on MsgID and ParentID > > MsgID will be the Id of a tag and parentid is the id of the parent with > > which it is linked. > > 1(parent0) > > | > > | > > -------5(child of 1) > > | > > |___11(child of 5) > > | > > |____12(child of 5 and sibling of 11) > > ____6(child of 1 and sibling of 5) > > | > > |____7(child of 6) > > | > > |___8(child of 7) > > 2(parent 2) > > | > > |____9(child of 2) > > | > > |____10(child of 2) > > > > 3(parent 3) > > > > 4(parent 4) > > Like this I have to show dynamic tree like structure in HTML form.I am > using > > cocoon2.0 > > This can be either handled by XSP or XSL or both. > > Please suggest me how to solve the recursive loop problem using XSL.. > > How can I apply logic to have dynamic tree structure building function > based > > on the values of Hashtable keys and values. > > Pls suggest ideas. > > Thanks, > > Niket > > > --------------------------------------------------------------------- > Please check that your question has not already been answered in the > FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> > > To unsubscribe, e-mail: <[EMAIL PROTECTED]> > For additional commands, e-mail: <[EMAIL PROTECTED]> --------------------------------------------------------------------- Please check that your question has not already been answered in the FAQ before posting. <http://xml.apache.org/cocoon/faqs.html> To unsubscribe, e-mail: <[EMAIL PROTECTED]> For additional commands, e-mail: <[EMAIL PROTECTED]>