[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message] Re: Ungready Flag on Regex
First, I've try to change all xsl:non-matching-substring TVT with xsl:sequence, and that was worst. Then, I've changed only pt:replaceTextDollar xsl:non-matcing-substring TVT to a xsl:sequence, without success. The problem was my test was not correctly written. I now have written all test cases, testing direct calls, nested calls, and so on. Thanks a lot, it now works. @Martin : I apologize for being too quick, and not precise when applying your suggestion ; it was late, and the curfew news had a bad effect on me. @Gerrit, nesting these markups have real use cases. For example, in a GIT course, if I want to explain the bisect's steps, I'll write someting like : $ git bisect *start* $ git bisect *bad* $ git bisect *good*905d48bb $ git bisect *run*run-xspec.sh ... $ git bisect *reset* So a $$\$ git bisect **start**$$ ... Or, if I explain the merge-request process, I want to highlight the URL return by the server : $ *git push origin issues/3* C numC)ration des objets: 37, fait. DC)compte des objets: 100% (37/37), fait. Compression par delta en utilisant jusqu'C 4 fils d'exC)cution Compression des objets: 100% (11/11), fait. C criture des objets: 100% (20/20), 3.21 Kio | 1.60 Mio/s, fait. Total 20 (delta 5), rC)utilisC)s 0 (delta 0), rC)utilisC)s du pack 0 remote: remote: To create a merge request for issues/3, visit: remote: https://gitlab.oxiane.org/formation/tools/oxslides-java/-/merge_requests/new?merge_request%5Bsource_branch%5D=issues%2F3 remote: To https://gitlab.oxiane.org/formation/tools/oxslides-java.git B * [new branch]B B B B B issues/3 -> issues/3 I'll probably never have a code or a bold nested inside a link, but maybe... Be safe, Christophe ** Le 23/10/2020 C 03:01, Imsieke, Gerrit, le-tex gerrit.imsieke@xxxxxxxxx a C)critB : > Christophe, > > Have you tried Martin's solution? > > It solves the issue and it doesn't create atomic values instead of > text nodes. > > You need to see that you've been smashing the results of the inner > function invocations to text nodes, no matter whether elements have > been created by these functions in the first place. > > Martin hasn't changed xsl:non-matching-substring in the innermost > function pt:replaceTextArobase() so it still produces a text node. > xsl:matching-substring in pt:replaceTextArobase() is unchanged. It > creates a text:span element with a text node in it. > > Previously, whatever came out of pt:replaceTextArobase() was cast to a > text node by the text value template in pt:replaceTextDollar(). > The use of xsl:sequence instead of the text value template just makes > sure that whatever pt:replaceTextArobase() returned will be returned > in the xsl:non-matching substring branch. If it is a text:span > element, the result will be a text:span element, if it is a text node, > the result will also be a text node. No casting to atomic values occurs. > > Maybe you picture xsl:sequence as doing some reverse smashing > operation: While xsl:value-of smashes atomic values to text nodes, you > might think that xsl:sequence smashes text nodes to atomic values. It > does not. > > Gerrit > > P.S.: Looking forward to the future requirement that the ** $$ @@ > pseudo markup should be able to nest. > > > On 23.10.2020 00:50, Christophe Marchand cmarchand@xxxxxxxxxx wrote: >> That's not the problem. Changing to <xsl:sequence .../> is worse, it >> creates some pseudo-atomic-values instead of text() nodes. >> >> Christophe >> >> Le 22/10/2020 C 23:48, Martin Honnen martin.honnen@xxxxxx a C)critB : >>> On 22.10.2020 23:14, Christophe Marchand cmarchand@xxxxxxxxxx wrote: >>>> For sure, regex are strange to me, even if I think they are really >>>> usefull. >>>> >>>> So, when a regex king give me the right regex to do exactly what I >>>> want, >>>> I take this regex, and I adapt it to other similar use-cases. >>>> >>>> My first problem was with comments, and I've adapted it to other >>>> kind of >>>> markers : >>>> >>>> **bold** >>>> $$code$$ >>>> @@link@@ >>>> >>>> The first two are Ok, but I can not make it run for the third case. >>>> >>>> I join the XSL, a XSpec file, I have one scenario that fails. If >>>> someone >>>> could : >>>> >>>> B 1. give me the solution >>>> B 2. explain me why it was failing >>>> B 3. explain me why the solution works >>>> >>>> it would be really a good thing. >>>> >>>> In France, we now have a curfew at 9pm. There a lot of beer that >>>> can not >>>> be sold ; i may have a barrel for the guy who help me ! >>>> >>>> Best regards, >>>> Christophe >>>> >>>> Le 08/10/2020 C 16:54, Imsieke, Gerrit, le-tex >>>> gerrit.imsieke@xxxxxxxxx >>>> a C)critB : >>>>> >>>>> >>>>> On 08.10.2020 16:26, Liam R. E. Quin liam@xxxxxxxxxxxxxxxx wrote: >>>>>> You want [^*]*? >>>>> >>>>> Thinking of the brilliant potential for misunderstanding that this >>>>> answer entails. >>>>> >>>>> Christophe: I don't understand why you are asking me whether I want >>>>> [^*]*. >>>>> >>>>> Jokes aside, I think you need the non-greedy question mark modifier, >>>>> but not on [^*]*. You use it to make .* non-greedy. Otherwise it will >>>>> stop at the first '*' that it encounters. >>>>> >>>>> This works: >>>>> >>>>> <xsl:template name="xsl:initial-template"> >>>>> B <doc> >>>>> B B B <xsl:analyze-string >>>>> B B B B B select="'Comments are delimited by **/* */** or prefixed by >>>>> **//**'" >>>>> B B B B B regex="\*\*(.*?)\*\*"> >>>>> B B B B B <xsl:matching-substring> >>>>> B B B B B B B <b> >>>>> B B B B B B B B B <xsl:value-of select="regex-group(1)"/> >>>>> B B B B B B B </b> >>>>> B B B B B </xsl:matching-substring> >>>>> B B B B B <xsl:non-matching-substring> >>>>> B B B B B B B <xsl:value-of select="."/> >>>>> B B B B B </xsl:non-matching-substring> >>>>> B B B </xsl:analyze-string> >>>>> B </doc> >>>>> </xsl:template> >>>>> >>> >>> I think the issue is your use of text value templates >>> >>> <xsl:non-matching-substring>{pt:replaceTextArobase(.)}</xsl:non-matching-substring> >>> >>> that strips any elements; you need to use >>> B <xsl:non-matching-substring> >>> B B B <xsl:sequence select="pt:replaceTextArobase(.)"/> >>> B </xsl:non-matching-substring>
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|