[XQuery Talk Mailing List Archive Home] [By Date] [By Thread] [By Subject] [By Author] [Recent Entries] [Reply To This Message]

Correction: Re: XQuery function to do elementX/not-elementX chunking?

David Sewell dsewell at virginia.edu
Tue Sep 13 17:10:24 PDT 2005

inurl 000768.html
Someone will object that the sequence of sequences I claimed was my
goal will be flattened. What I really want as output is something like

<span>This text has <i>italics</i> and</span>
<span>an embedded ref</span>

so I'm really looking sequentially for node sequences defined as either
(1) a single <ref> or (2) a sequence of one or more non-<ref> nodes.

On Tue, 13 Sep 2005, David Sewell wrote:

> Given an XML element like this:
>   <ref>This text has <i>italics</i> and <ref>an embedded ref</ref> and
>     more text including <b>boldface</b> and <ref>another ref</ref>
>     and a bit more text.</ref>
> I want to break this into a sequence of sequences of its node children
> like so (with text nodes represented as strings, ignoring linebreaks):
> (
>   ( 'This text has ', <i>italics</i>, ' and ' ) ,
>   <ref>an embedded ref</ref>,
>   ( ' and more text including ', <b>boldface</b>, ' and ' ),
>   <ref>another ref</ref>,
>   'and a bit more text.'
> )
> In other words, pull out alternating sequences of (1) <ref> elements and
> (2) other nodes that are not <ref> elements. (The practical application is
> so that the <ref>s can be transformed into HTML <span>s without
> permitting embedded <spans>s -- they are HTML-legal but cause certain
> problems.)
> I was able to do this by writing a 10-line function that relies on a
> fairly clunky process of selecting all the <ref> children and then
> chunking the other nodes that precede and/or follow them; it relies on
> some fairly ugly use of preceding-sibling(), following-sibling(),
> name(), and the '>>' operator. It's so ugly that I don't want to inflict
> it this list (unless someone insists).
> Does anyone have a simple, elegant way to do this?

David Sewell, Editorial and Technical Manager
Electronic Imprint, The University of Virginia Press
PO Box 400318, Charlottesville, VA 22904-4318 USA
Courier: 310 Old Ivy Way, Suite 302, Charlottesville VA 22903
Email: http://xquery.com/mailman/listinfo/talk   Tel: +1 434 924 9973
Web: http://www.ei.virginia.edu/


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.
First Name
Last Name
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.