Subject: Re: [xsl] java Regex call From: John Sharp <jsharp@xxxxxx> Date: Thu, 10 Jul 2003 09:20:29 -0500 |
Jeni, Thank you for your reply. > Of course you need to know what regular expression is being used to be > able to tell which regex groups you're actually interested in... Yes, I should have mentioned that in my case I will never know this, as the regex comes in a separate XML. I'm really looking for examples of how the Java regex classes (or any Java classes for that matter) are used as XSLT extensions. I can run all the simple java.Date examples etc,. but when I need to start mixing object handles - as in the java Matcher and Pattern classes - I can't seem to get it working. Is is better to create my own java wrapper class to hide the complexities ? > By the way, I'm not sure why you're using "//" in $rule//@name Its a typo by me. > If you're using Saxon 7.6, why not use the built-in regular expression > support rather than Java extensions? http://www.biglist.com/lists/xsl-list/archives/200201/msg00862.html I didn't see any regex support on the 7.6 page, but I can follow this up on the saxon list. Thanks again, Kind regards, John, Jeni Tennison wrote: > > Hi John, > > > Hi, Does anyone have an example of using the java.util.regex > > functions to return the "components" of the regex that matched. > [snip] > > Also, I'm using the Saxon 7.6 processor. > > If you're using Saxon 7.6, why not use the built-in regular expression > support rather than Java extensions? > > > Example: if my regex is defined as:- > > > > (([^_]*)_PARA)|((.*?)(PARA)(.*?)) > > > > and my input is "ABC_PARA" > > > > Then I need to know what portions of the input matched > > each (if any) part of the regex groups, ([^_]*) and (.*?) etc,. > > in terms of group number and matching string. > > If you use <xsl:analyze-string> then within the > <xsl:matching-substring>, the regex-group() function gives you access > to the values of the regex groups. Try: > > <xsl:for-each select="$rule//Type"> > <xsl:variable name="tdlType" select="." /> > <xsl:analyze-string select="." regex="{$regex}"> > <xsl:matching-substring> > <RULE_MATCH> > <xsl:value-of select="$rule//@name" /> > </RULE_MATCH> > <REGEX><xsl:copy-of select="$regex" /></REGEX> > <GROUP1><xsl:value-of select="regex-group(1)" /></GROUP1> > <GROUP2><xsl:value-of select="regex-group(2)" /></GROUP2> > <GROUP3><xsl:value-of select="regex-group(3)" /></GROUP3> > ... > </xsl:matching-substring> > </xsl:analyze-string> > </xsl:for-each> > > Of course you need to know what regular expression is being used to be > able to tell which regex groups you're actually interested in... > > By the way, I'm not sure why you're using "//" in $rule//@name -- this > will return all the name attributes of all the elements that are > descendants of $rule, as well as of $rule itself, and return them in a > whitespace-separated list (this being XSLT 2.0). Is that what you > really want? > > Cheers, > > Jeni > > --- > Jeni Tennison > http://www.jenitennison.com/ XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] java Regex call, Jeni Tennison | Thread | Re: [xsl] java Regex call, Jeni Tennison |
Re[2]: [xsl] Formatting hyperlinks , Peter Simard | Date | Re: [xsl] java Regex call, Jeni Tennison |
Month |