Subject: RE: [xsl] analyze-string regex From: "Rushforth, Peter" <Peter.Rushforth@xxxxxxxxxxxxxxxxx> Date: Wed, 26 Mar 2014 21:24:35 +0000 |
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: [xsl] 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="'(\{.*("title":.*"(.*?)").*("qualifier" :.*"(.*?)").*("type":.*"(.*?)").*("geometr y":.*(\{.*?\})).*\}{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 |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] analyze-string regex, Imsieke, Gerrit, le- | Thread | Re: [xsl] analyze-string regex, Graydon |
Re: [xsl] analyze-string regex, Imsieke, Gerrit, le- | Date | Re: [xsl] analyze-string regex, Graydon |
Month |