This is the mail archive of the
xsl-list@mulberrytech.com
mailing list .
Re: RE: Regular expression functions (Was: Re: comments on December F&O draft)
- From: michael dot h dot kay at ntlworld dot com
- To: xsl-list at lists dot mulberrytech dot com
- Cc: <xsl-list at lists dot mulberrytech dot com>
- Date: Mon, 14 Jan 2002 18:12:24 +0000
- Subject: Re: RE: Regular expression functions (Was: Re: [xsl] comments on December F&O draft)
- Reply-to: xsl-list at lists dot mulberrytech dot com
Well, it obviously can't work quite as you describe because your example is valid XSLT 1.0 syntax and doesn't involve a regexp at all!
But certainly, the way I'm leaning from this discussion is towards some kind of model where you submit a string to decomposition by means of a regexp and the decomposed pieces are then supplied to some kind of XSLT template, one at a time, for subsequent processing.
Mike Kay
>
> From: "Chris Bayes" <chris@Bayes.co.uk>
> Date: Mon, 14 Jan 2002 04:13:12 -0000
> To: <xsl-list@lists.mulberrytech.com>
> Subject: RE: Regular expression functions (Was: Re: [xsl] comments on December F&O draft)
>
> 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
>
>
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list