AW: [xsl] struggling with <xsl:analyze-string>

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:matching-substring>
			<xsl:call-template name="get.date">
				<xsl:with-param name="text" select="." as="xs:string"/>
			</xsl:call-template>
		</xsl:matching-substring>
	</xsl:analyze-string>
</xsl:for-each>

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

wbr,
Roman
_______________________________________

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


> -----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