[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 16:47:41 +0100

Hi David,

Thank you very much for your quick answer.

> part/section/par[@class='45_UeberschrPara' and
>   contains(., 'In-Kraft-Treten')]/following-sibling::*

Unfortunately, the structure given may vary very much, meaning that there may
additional levels or <inline> elements to search within.
But I should be able to use
following::* then.
Don't know if that performs better. Does it?

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

Ah, that makes it a lot clearer. Thanks.

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

That could indeed be the case. I just started to learn the new functions and
instructions dealing with regular expressions, so I am a total newbie here.
If I use the matches function in my select expression, how can I pass my found
to the named template?

Here is what I tried (input is the same as before):

<xsl:template match="/document">
	<bekanntmachung ordnungszeichen="Paragraf">
		<xsl:attribute name="gilt-ab">
				<xsl:when test="part/section/par[@class='45_UeberschrPara' and contains(.,
					<xsl:for-each select="part/section/par[@class='45_UeberschrPara' and
contains(text(), 'In-Kraft-Treten')]/following::*">
						<!-- This regular expression is not working -->
						<xsl:analyze-string select="." regex="\d{{1,2}}.\s\w+.\s\d{{4}}" >
								<xsl:value-of select="."/>
								<xsl:call-template name="get.date">
									<xsl:with-param name="text" select="." as="xs:string"/>

In my output the attribute "gilt-ab" is empty. Since I have never written any
regular expresson before,
there is surely something wron with it. I strongly suspect the "." in it.
The regular expression should match strings like "1. Jdnner 2004", "12.
Dezember 2003" etc.

Thank you very much for your patience!


Current Thread