[XSL-LIST Mailing List Archive Home] [By Thread] [By Date]

AW: [xsl] struggling with

Subject: AW: [xsl] struggling with <xsl:analyze-string>
From: "Huditsch Roman" <Roman.Huditsch@xxxxxxxxxxxxx>
Date: Wed, 26 Jan 2005 17:14:24 +0100

Ok, solved it.

<xsl:for-each select="part/section/par[@class='45_UeberschrPara' and
contains(text(), 'In-Kraft-Treten')]/following::text()">
	<xsl:analyze-string select="." regex="\d{{1,2}}.+\d{{4}}">
			<xsl:call-template name="get.date">
				<xsl:with-param name="text" select="." as="xs:string"/>

This code snippet does what I expected.
Would be nice to know if matches() would get me the same result...


Roman Huditsch
IT and Electronic Publishing
LexisNexis ARD Orac
Marxergasse 25
1030 Vienna
ph: +43-1-534 52-1514
f: +43-1-534 52-140
e-mail roman.huditsch@xxxxxxxxxxxxx

> -----Urspr|ngliche Nachricht-----
> Von: David Carlisle [mailto:davidc@xxxxxxxxx]
> Gesendet: Mittwoch, 26. Januar 2005 16:22
> An: xsl-list@xxxxxxxxxxxxxxxxxxxxxx
> Betreff: Re: [xsl] struggling with <xsl:analyze-string>
> I know that speed isn't so important if you are not getting
> the correct
>   answer but:
>   <xsl:for-each
>   select="part/section//*[preceding::par[@class='45_UeberschrPara' and
>   contains(., 'In-Kraft-Treten')]]">
> maybe the optimiser will re-arrange that but on the face of
> it you have managed to combine two of the most expensive
> operations (// and
> preceding::) and recursively call one from the other.
> the above searches the whole document below part/section to
> arbitarary depth and then _for each_ found element searches
> back over the whole document for a par with that property. If
> your par are siblings which appears to be the case it's equivalent to
> part/section/par[@class='45_UeberschrPara' and
>   contains(., 'In-Kraft-Treten')]/following-sibling::*
> > I suppose that the curly bracetts are giving my troubles...
> The regex attribute is an attribute value template so {} will
> be exeuted as an Xpath and the resulting string used in place
> of the AVT so the regex there is \d4 you need {{ }} to make a
> {} group as in any AVT.
> It may be just because you have simplifed too much but it
> would look as if you don't need to use analyze-string here at
> all but just add [matches(.,'\d{4}')] to the select
> expression in your for-each.
> David
> ______________________________________________________________
> __________
> This e-mail has been scanned for all viruses by Star. 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
> ______________________________________________________________
> __________

Current Thread