|
[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.eduTue Sep 13 17:10:24 PDT 2005
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/
|
PURCHASE STYLUS STUDIO ONLINE TODAY!Purchasing Stylus Studio from our online shop is Easy, Secure and Value Priced! Download The World's Best XML IDE!Accelerate XML development with our award-winning XML IDE - Download a free trial today! Subscribe in XML format
|

Cart








