Subject: Formating to text From: Eric van der Vlist <vdv@xxxxxxxxxxxx> Date: Fri, 24 Mar 2000 00:12:33 +0100 |
Hi, I am trying to find a simple solution to format a XML document (XMLNews-Story) to raw text while preserving some presentation such as paragraphs, lists and indentation. Taking this snippet : <p> this is a list : <li>item 1</li> <li>item 2</li> end of the list <ul>indentation </ul> </p> as an example, it's possible to transform (I attach the XSLT below) this into something which is describing the raw presentation of the words and blocs of words such as : <?xml version="1.0" encoding="utf-8"?> <b indent="0" cr="1"> <w value="this"/> <w value="is"/> <w value="a"/> <w value="list"/> <w value=":"/> <b indent="0" cr="1"> <w value="."/> <b ident="1" cr="0"> <w value="item"/> <w value="1"/> </b> </b> <b indent="0" cr="1"> <w value="."/> <b indent="1" cr="0"> <w value="item"/> <w value="2"/> </b> </b> <w value="end"/> <w value="of"/> <w value="the"/> <w value="list"/> <b indent="1" cr="1"> <w value="indentation"/> </b> </b> where b is a bloc with attributes indent (value of the indentation) and cr (do we have to go to the next line) and w is a word. This structure is reflecting pretty well the layout of the text, but from there I don't see how I can go on with XSL... I am using XT and can write an output handler to deal with it, but I would like to be sure I cannot proceed using XSLT only ! Does anyone have any idea ? Thanks Eric --------------- XSLT --------------- <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="text()" name="text"> <xsl:param name="string" select="normalize-space(.)"/> <xsl:variable name="before" select="substring-before($string, ' ')"/> <xsl:variable name="after" select="substring-after($string, ' ')"/> <xsl:choose> <xsl:when test="$before!=''"> <w value="{$before}"/> <xsl:call-template name="text"> <xsl:with-param name="string" select="$after"/> </xsl:call-template> </xsl:when> <xsl:otherwise> <xsl:if test="$string!=''"> <w value="{$string}"/> </xsl:if> </xsl:otherwise> </xsl:choose> </xsl:template> <xsl:template match="p"> <b ident="0" cr="1"> <xsl:apply-templates select="@*|node()"/> </b> </xsl:template> <xsl:template match="ul"> <b indent="1" cr="1"> <xsl:apply-templates select="@*|node()"/> </b> </xsl:template> <xsl:template match="li"> <b indent="0" cr="1"><w value="."/> <b indent="1" cr="0"> <xsl:apply-templates select="@*|node()"/> </b> </b> </xsl:template> </xsl:stylesheet> -- ------------------------------------------------------------------------ Eric van der Vlist Dyomedea http://xmlfr.org http://ducotede.com http://dyomedea.com ------------------------------------------------------------------------ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
XML reporting tool ?, Pady Srinivasan | Thread | Re: Formating to text, Steve Tinney |
Re: xsl loop for display in drop-do, Seema Ramanathan | Date | LotusXSL 1.0.0, ssdhanoa |
Month |