Subject: RE: Regular expression functions (Was: Re: [xsl] comments on December F&O draft) From: "Chris Bayes" <chris@xxxxxxxxxxx> Date: Mon, 14 Jan 2002 04:13:12 -0000 |
Hi, I've been a bit tied up with one thing and another (and I think you might have discussed this before) but aren't regex matches just predicates on text nodes ala <xsl:template match="text()['\(.*\)']"> <x><xsl:apply-templates select=".[1]" /></x> </xsl:template> Which applies templates to whatever is not matched (child texts) (but which matches the template). So that template on a text node "(a(b(c)d)e)" (assuming greedy)would produce <x> a <x> b <x> c </x> d </x> e </x> Of course you could always stick it in a variable <xsl:variable name="match-tree"> <xsl:apply-templates select="'(a(b(c)d)e)'" /> </xsl:variable> Ok I'm thinking too tree like. What if "2002-01-01" <xsl:template match="text()['(.*?)-(.*?)-(.*?)']"> <year><xsl:apply-templates select=".[1]" /></year> <month><xsl:apply-templates select=".[2]" /></month> <day><xsl:apply-templates select=".[3]" /></day> </xsl:template> Or "2002-01-Wednesday 2nd" <xsl:template match="text()['(.*?)-(.*?)-(.*?)']"> <year><xsl:apply-templates select=".[1]" /></year> <month><xsl:apply-templates select=".[2]" /></month> <xsl:apply-templates select=".[3]" /> </xsl:template> <xsl:template match="text()['(.*?) (.*?)']"> <day><xsl:apply-templates select=".[1]" /></day> <date><xsl:apply-templates select=".[2]" /></date> </xsl:template> Or "2002-01-Wednesday 2nd" <xsl:template match="text()['(.*?)-(.*?)-(.*?)']"> <year><xsl:apply-templates select=".[1]" /></year> <month><xsl:apply-templates select=".[2]" /></month> <xsl:apply-templates select="concat('doh!', .[3])" /> </xsl:template> <xsl:template match="text()['doh!(.*?) (.*?)']"> <day><xsl:apply-templates select=".[1]" /></day> <date><xsl:apply-templates select=".[2]" /></date> </xsl:template> Maybe it's rubbish but it doesn't look too alien to me. What other useful predicates can you put on a text node? Surely it isn't going to clash with anything. There are nearly 1000 pages of wd's to look at here so looking at it another way is there anything that says that . can't be a sequence and that I can't index into it with .[x]? Ciao Chris XML/XSL Portal http://www.bayes.co.uk/xml XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: Regular expression functions (W, Jeni Tennison | Thread | Re: Regular expression functions (W, Jeni Tennison |
RE: Regular expression functions (W, Marc Portier | Date | Re: [xsl] XSLT Repository, Simon Bracken |
Month |