Subject: Re: [xsl] Best practice for group-adjacent with quasi-null grouping key? From: "Eliot Kimber ekimber@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> Date: Tue, 26 Apr 2016 19:27:57 -0000 |
Or you can just add some constant string so you don't have empty strings: group-adjacent="'x-'||@role" Can make debugging easier if you decide to report the grouping key. Cheers, E. ---- Eliot Kimber, Owner Contrext, LLC http://contrext.com On 4/26/16, 1:47 PM, "David Sewell dsewell@xxxxxxxxxxxx" <xsl-list-service@xxxxxxxxxxxxxxxxxxxxxx> wrote: >Yes, that seems like the most elegant solution, since for my purposes an >empty >string and a null attribute are synonymous. Thanks! > >On Tue, 26 Apr 2016, Martin Honnen martin.honnen@xxxxxx wrote: > >> On 26.04.2016 20:39, David Sewell dsewell@xxxxxxxxxxxx wrote: >>> (Following assumes XSLT 2.0) >>> >>> I don't use the @group-adjacent form of <xsl:for-each-group> often >>> enough to be a master of it. I just ran into the problem that an empty >>> sequence is not allowed as the result of evaluating the group-adjacent >>> expression. Given data like >>> >>> <contributor role="author">Joe Jones</contributor> >>> <contributor role="author">Mary Mitchell</contributor> >>> <contributor role="editor">Betty Berkeley</contributor> >>> <contributor role="editor">Peter Parker</contributor> >>> >>> my first instinct was to use >>> <xsl:for-each-group select="contributor" group-adjacent="@role"> >>> >>> but I got a run-time error because the @role is not always present in >>>my >>> data. So I revised to >>> >>> <xsl:for-each-group select="contributor" group-adjacent="if (@role) >>> then string(@role) else 'false'"> >>> >>> which give the desired results. But is there a better general strategy, >>> maybe using boolean false() as the grouping value, and then being sure >>> to cast current-grouping-key() as a string whenever a string comparison >>> is needed? >> >> >> I would be inclined to simply use >> >> group-adjacent="string(@role)" >> >> unless you could have both <el role="">...</el> and <el>...</el> and >> would need to distinguish them. >> >> >> --- >> Diese E-Mail wurde von Avast Antivirus-Software auf Viren gepr|ft. >> https://www.avast.com/antivirus >> >> > >-- >David Sewell, Editorial and Technical Manager >ROTUNDA, The University of Virginia Press >PO Box 400318, Charlottesville, VA 22904-4314 USA >Email: dsewell@xxxxxxxxxxxx Tel: +1 434 924 9973 >Web: http://rotunda.upress.virginia.edu/
Current Thread |
---|
|
<- Previous | Index | Next -> |
---|---|---|
Re: [xsl] Best practice for group-a, David Sewell dsewell | Thread | [xsl] Implementation Advice: Groupi, Eliot Kimber ekimber |
Re: [xsl] Best practice for group-a, David Sewell dsewell | Date | [xsl] Implementation Advice: Groupi, Eliot Kimber ekimber |
Month |