Ok, solved it.
<xsl:for-each select="part/section/par[(_at_)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(_dot_)huditsch(_at_)lexisnexis(_dot_)at
www.lexisnexis.at
-----Ursprüngliche Nachricht-----
Von: David Carlisle [mailto:davidc(_at_)nag(_dot_)co(_dot_)uk]
Gesendet: Mittwoch, 26. Januar 2005 16:22
An: xsl-list(_at_)lists(_dot_)mulberrytech(_dot_)com
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[(_at_)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[(_at_)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
______________________________________________________________
__________
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail:
<mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--
--~------------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
To unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
or e-mail: <mailto:xsl-list-unsubscribe(_at_)lists(_dot_)mulberrytech(_dot_)com>
--~--