|
Subject: (dsssl) Sort child elements by attribute or data From: Tim McDaniel <tmcd@xxxxxxxxx> Date: Sun, 23 Mar 2003 21:35:01 -0600 (CST) |
(In case anyone cares about previous questions: I went ahead with
<!DOCTYPE style-sheet
PUBLIC "-//James Clark//DTD DSSSL Style Sheet//EN" [
<!ENTITY common SYSTEM "loar-common.dsl">
]>
&common;
because I was already using that syntax in my XML input. For another
question: I specified line spacing font-size on a "make sequence"
inside "root", and that cleaned up a lot of code. But one attribute
that's not inherited, and therefore that I couldn't specify there, is
space-before:. It turns out that it varied enough from paragraph to
paragraph that it really had to be specified in each case separately
anyway.)
Today's question: I have an existing structure that looks something
like
<group groupname="West">
<generalitem>...
<generalcomment>...
<item>
... lots of stuff ...
<name>Zoe Noel</name>
... lots of stuff ...
</item>
<item>
... lots of stuff ...
<name>Adam Smith</name>
... lots of stuff ...
</item>
<item>
... lots of stuff ...
<name>Barbara Stanley</name>
... lots of stuff ...
</item>
</group>
... other groups with other items ...
Currently, I sort them by name by hand. Is there any way that I could
sort them programmatically in Jade? The big stumbling block I see is
getting the contents of
<name>The Contents</name>
(The DTD says that a name can contain only #PCDATA, so at least
there's no complications there.) Is the "data" function usable for
that? Or "entity-text"? If not, I suppose I could change it to be
like
<name name="Zoe Noel"/>
Can someone outline how I might proceed if I can get the name? I
think this might be doable: In the group element, process the
generalitem and generalcomment children (somehow), if any. Call
(children) to get the child nodes, and do something (node-list-filter
using gi?) to extract only the item elements. For each member of that
list X, generate a two-member list
( NAME PROCESSED_ITEM )
where NAME is the name value for X and PROCESSED_ITEM is the sosofo
return value of processing X (is process-node-list available in
Jade?). Then call a sort function (check the mailing list archives
first to see if someone already provided one) to sort the list by
NAME. Then sosofo-append the PROCESSED_ITEM members in list order,
and that's the result.
Does that sound doable, or have I assumed a function that doesn't
exist in Jade, or is there an easier way?
--
Tim McDaniel (home); Reply-To: tmcd@xxxxxxxxx; work is tmcd@xxxxxxxxxxx
DSSSList info and archive: http://www.mulberrytech.com/dsssl/dssslist
| Current Thread |
|---|
|
| <- Previous | Index | Next -> |
|---|---|---|
| (dsssl) -i in jade -- affects only , Pavel Tolkachev | Thread | (dsssl) Jade keeps translating non-, Tim McDaniel |
| (dsssl) -i in jade -- affects only , Pavel Tolkachev | Date | (dsssl) Jade keeps translating non-, Tim McDaniel |
| Month |