xsl-list
[Top] [All Lists]

Re: [xsl] tokenize a string with escaped spaces

2020-04-03 21:58:12
I found that this works for my purposes:

<xsl:analyze-string select="$outputclass" regex="\S+'[^']*'">
    <xsl:matching-substring>
        <xsl:message><xsl:value-of select="."/></xsl:message>
    </xsl:matching-substring>
</xsl:analyze-string>

Then if $attr is this:

ng-show-myModel=='Radio button 1' ng-show-myModel=='Radio button 2'

I get this back:

ng-show-myModel=='Radio button 1'
ng-show-myModel=='Radio button 2'


On 4/3/2020 6:17 PM, Mark Giffin m1879(_at_)earthlink(_dot_)net wrote:
Thanks Michael. The double quotes " in the regex give errors in this context:

<xsl:analyze-string select="$attr" regex="\S*('[^']*')?("[^"]*")?">

Should those be single quotes instead? Or should I put the regex in a variable?

On 4/3/2020 4:38 PM, Michael Kay mike(_at_)saxonica(_dot_)com wrote:
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(_at_)earthlink(_dot_)net <mailto:m1879(_at_)earthlink(_dot_)net> <xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com <mailto:xsl-list-service(_at_)lists(_dot_)mulberrytech(_dot_)com>> 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


XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/805141> (by email)

XSL-List info and archive <http://www.mulberrytech.com/xsl/xsl-list>
EasyUnsubscribe <http://lists.mulberrytech.com/unsub/xsl-list/805141> (by email <>)
--~----------------------------------------------------------------
XSL-List info and archive: http://www.mulberrytech.com/xsl/xsl-list
EasyUnsubscribe: http://lists.mulberrytech.com/unsub/xsl-list/1167547
or by email: xsl-list-unsub(_at_)lists(_dot_)mulberrytech(_dot_)com
--~--
<Prev in Thread] Current Thread [Next in Thread>