Subject: Re: [xsl] Re: efficiently extracting a capture group from analyze-string() From: "Graydon graydon@xxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Sat, 4 Jun 2022 17:58:46 -0000 |
On Sat, Jun 04, 2022 at 05:22:16PM -0000, Chris Papademetrious christopher.papademetrious@xxxxxxxxxxxx scripsit: > The tricky part is, I need an empty sequence if the input string does not > comply with pattern. [snip] > And although this example processes a filename, I'd like to find best > generalized way to obtain a capture group (or nothing) for any match scenario. > In perl, I can assign a variable to the result of a regex match: > > my $file = 'path/my-sometype.xml'; > > my ($type) = ($file =~ m{my-(\w+)}); This is hard because perl is hiding a conditional in =~ and there's no analagous XPath mechanism. <xsl:variable name="adjust" as="xs:string" select="replace($file,'^.*my-([^\.]*).xml$','$1')" /> <xsl:variable name="type" as="xs:string?" select="if ($file eq $adjust) then '' else $adjust" /> Will do it in the same sort of conceptual pattern perl is using. <xsl:variable name="type" as="xs:string?" select="analyze-string($file,'my-(\w+)')/descendant::fn:group[@nr eq '1']/string()" /> and adding fn to the namespaces declared for the stylesheet is probably more natural for XPath. -- Graydon Saunders | graydonish@xxxxxxxxx ^fs oferiode, pisses swa mfg. -- Deor ("That passed, so may this.")
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Re: efficiently extractin, Imsieke, Gerrit, le- | Thread | Re: [xsl] efficiently extracting a , Dimitre Novatchev dn |
Re: [xsl] Re: efficiently extractin, Chris Papademetrious | Date | Re: [xsl] efficiently extracting a , Dimitre Novatchev dn |
Month |