[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

AW: struggling with <xsl:analyze-string>

Subject: AW: struggling with <xsl:analyze-string>
From: "Huditsch Roman" <Roman.Huditsch@xxxxxxxxxxxxx>
Date: Wed, 26 Jan 2005 16:47:41 +0100
string anal
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
be
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
date
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:choose>
				<xsl:when test="part/section/par[@class='45_UeberschrPara' and contains(.,
'In-Kraft-Treten')]">
					<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:matching-substring>
								<xsl:value-of select="."/>
								<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>
				</xsl:when>
				<xsl:otherwise>
					<xsl:text>01.01.1000</xsl:text>
				</xsl:otherwise>
			</xsl:choose>
		</xsl:attribute>
	</bekanntmachung>
</xsl:template>

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!

wbr,
Roman

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.