Re: [xsl] tokenize a string with escaped spaces

Subject: Re: [xsl] tokenize a string with escaped spaces
From: "Michael Kay mike@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx>
Date: Fri, 3 Apr 2020 23:38:31 -0000
Try using xsl:analyze-string with a regex of

\S*('[^']*')?("[^"]*")?

I've had to guess at your specification from your single example, but you
should be able to adapt it if the spec is different.

You could also extend the regex to pick up the keyword (before '=') and value
(after '=') as captured substrings:

(\S+)=(\S+|('[^']*')|("[^"]*"))

and then regex-group(1) gives you the keyword, and regex-group(2) the value.

Michael Kay
Saxonica

> On 4 Apr 2020, at 00:17, Mark Giffin m1879@xxxxxxxxxxxxx
<xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote:
>
> I am tokenizing an XML attribute that has info I need in it. Example:
>
> myattr="ng-model=mymodel ng-show-mymodel=='Radio button 1'"
>
> So I want to tokenize into these two values:
>
> ng-model=mymodel
> ng-show='Radio button 1'
>
> Using white space like tokenize($attr, '\s') gives me this, not what I
want:
>
> ng-model=mymodel
> ng-show='Radio
> button
> 1'
>
> Do you have a suggestion on how to do this? Doesn't have to use tokenize().
>
> Thanks,
> Mark

Current Thread