[XSL-LIST Mailing List Archive Home] [By Thread] [By Date] [Recent Entries] [Reply To This Message]

RE: analyze-string regex

Subject: RE: analyze-string regex
From: "Rushforth, Peter" <Peter.Rushforth@xxxxxxxxxxxxxxxxx>
Date: Wed, 26 Mar 2014 21:24:35 +0000
RE:  analyze-string regex
Thank you Gerrit, that works well and gives me a new regex tool.  

Regards,
Peter
________________________________________
From: Imsieke, Gerrit, le-tex
[gerrit.imsieke@xxxxxxxxx]
Sent: March 26, 2014 4:54 PM
To:
xsl-list@xxxxxxxxxxxxxxxxxxxxxx
Subject: Re:  analyze-string regex

Hi
Peter,

You probably need to make all of the .* in the regex non-greedy (and
restore flags="s").

Gerrit

On 26.03.2014 21:30, Rushforth, Peter wrote:
>
Hi,
>
> I am trying to use xsl:analyze-string to process a json response, the
model of which is fixed.
>
> The target environment is saxon-ce, but I am
using oxygen to get things working.
>
> I was under the impression that the
regex would perform multiple matches, allowing me to generate a sequence of
elements from a string containing multiple objects that I match.  If that is
true (the spec says it should be, I think), then my regex is faulty.  Could
you offer any suggestions about the following, please?
>
> When I use dot-all
mode (@flags="s"), I get a single <option> corresponding to the last object in
the array.  When no flags, an empty sequence.  Any suggestions appreciated.
>
> My objective is to generate a sequence of <option> elements matching the
json objects:
>
> xslt:
>
> <xsl:stylesheet version="2.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ex="http://example.org/namespace" exclude-result-prefixes="ex">
>
<xsl:output method="xml" omit-xml-declaration="yes"/>
>    <xsl:template
match="json">
>      <datalist>
>        <xsl:copy-of
select="ex:json2Options(.)"/>
>      </datalist>
>    </xsl:template>
>
<xsl:function name="ex:json2Options">
>      <xsl:param name="json"/><!--
1       2                   3             4                              5
6               7                        8            9              -->
>
<xsl:variable name="regexps"
select="'(\{.*(&quot;title&quot;:.*&quot;(.*?)&quot;).*(&quot;qualifier&quot;
:.*&quot;(.*?)&quot;).*(&quot;type&quot;:.*&quot;(.*?)&quot;).*(&quot;geometr
y&quot;:.*(\{.*?\})).*\}{1,})'"/>
>      <xsl:analyze-string select="$json"
regex="{$regexps}">
>        <xsl:matching-substring>
>          <xsl:element
name="option">
>            <xsl:attribute name="data-title"
select="regex-group(3)"></xsl:attribute>
>            <xsl:attribute
name="data-qualifier" select="regex-group(5)"/>
>            <xsl:attribute
name="data-type" select="regex-group(7)"/>
>            <xsl:attribute
name="data-geometry" select="regex-group(9)"/>
>            <xsl:value-of
select="regex-group(3)"/>
>          </xsl:element>
>
</xsl:matching-substring>
>      </xsl:analyze-string>
>    </xsl:function>
>
</xsl:stylesheet>
>
> Input document:
>
> <json>
> [
> {
>      "title":
"Ottawa, Carleton, Ontario (Unincorporated area)",
>      "qualifier":
"LOCATION",
>      "type": "Geoname",
>      "bbox": [-75.6903367156744,
45.373570070138, -75.6524412843256, 45.427540929862],
>      "geometry":
{"type":"Point","coordinates":[-75.671387,45.400555]}
> },
> {
>      "title":
"Ottawa, Carleton; Russell, Ontario (City)",
>      "qualifier": "LOCATION",
>
"type": "Geoname",
>      "bbox": [-76.3555857, 44.9617738, -75.2465783,
45.5376514],
>      "geometry":
{"type":"Point","coordinates":[-75.58429,45.333389]}
> },
> {
>      "title":
"031G OTTAWA",
>      "qualifier": "LOCATION",
>      "type": "NTS",
>
"bbox": [-76.0, 45.0, -74.0, 46.0],
>      "geometry":
{"type":"Point","coordinates":[-75,45.5]}
> }]</json>
>
>
> Cheers, and
thanks,
> Peter Rushforth
>
>
>
>
>
--~------------------------------------------------------------------
>
XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list
> To
unsubscribe, go to: http://lists.mulberrytech.com/xsl-list/
> or e-mail:
<mailto:xsl-list-unsubscribe@xxxxxxxxxxxxxxxxxxxxxx>
> --~--
>

--
Gerrit
Imsieke
Geschdftsf|hrer / Managing Director
le-tex publishing services GmbH
Weissenfelser Str. 84, 04229 Leipzig, Germany
Phone +49 341 355356 110, Fax
+49 341 355356 510
gerrit.imsieke@xxxxxxxxx, http://www.le-tex.de
Registergericht / Commercial Register: Amtsgericht Leipzig
Registernummer /
Registration Number: HRB 24930

Geschdftsf|hrer: Gerrit Imsieke, Svea Jelonek,
Thomas Schmidt, Dr. Reinhard Vvckler

Current Thread

PURCHASE STYLUS STUDIO ONLINE TODAY!

Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced!

Buy Stylus Studio Now

Download The World's Best XML IDE!

Accelerate XML development with our award-winning XML IDE - Download a free trial today!

Don't miss another message! Subscribe to this list today.
Email
First Name
Last Name
Company
Subscribe in XML format
RSS 2.0
Atom 0.3
Site Map | Privacy Policy | Terms of Use | Trademarks
Free Stylus Studio XML Training:
W3C Member
Stylus Studio® and DataDirect XQuery ™are products from DataDirect Technologies, is a registered trademark of Progress Software Corporation, in the U.S. and other countries. © 2004-2013 All Rights Reserved.