Subject: Re: [xsl] Putting characters in an element From: David Carlisle <davidc@xxxxxxxxx> Date: Thu, 2 Oct 2003 14:21:05 +0100 |
This is a FAQ for both xslt 1 and 2, string oerations need strings as input and get a string by taking the string value of any nodes supplied, so all markup is lost on input to teh function, so clearly can't be there on output. li You don't want to apply your regexp handler to the entire al node, just its first child (if that is a text node) so <xsl:template match="al"> <xsl:variable name="first-string" select="string(node()[1][self::text()]"/> <xsl:variable name="rest" select=" node()[1][not(self::text())]|node()[position()>1]"/> <xsl:choose> <xsl:when test="matches($first-string,'\d.*')"> <li> <xsl:analyze-string select="." regex="^\d+\. "> <xsl:matching-substring> <nr><xsl:value-of select="."/></nr> </xsl:matching-substring> <xsl:non-matching-substring> <al><xsl:copy-of select="."/><xsl:copy-of select="$rest"/> </al> </xsl:non-matching-substring> </xsl:analyze-string> </li> </xsl:when> <xsl:otherwise> <!-- you hardly _ever_ want to copy descendant::node() as you will get an exponention explosion in the size of the output, you just want child nodes, or as here the current node --> <xsl:copy-of select="."/> </xsl:otherwise> </xsl:choose> </xsl:template> ________________________________________________________________________ This e-mail has been scanned for all viruses by Star Internet. The service is powered by MessageLabs. For more information on a proactive anti-virus service working around the clock, around the globe, visit: http://www.star.net.uk ________________________________________________________________________ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
[xsl] Putting characters in an elem, Harm Kok | Thread | Re: [xsl] Putting characters in an , Harm Kok |
RE: [xsl] Putting characters in an , Sergiu Ignat | Date | RE: [xsl] Parameter problem, Marsha Salo |
Month |