[Zope] Question about dtml-in

Sean McGrath sean@digitome.com
Fri, 03 Nov 2000 18:04:55 +0000


Hello all,

I have a question about the dtml-in tag. When it is iterating over a 
sequence, and the items in the sequence happen to be tuples containing 
exactly two items, then dtml-in places the first item from the sequence in 
sequence-key, and the second item goes in sequence-item. If the items in 
the sequence are not tuples of two items, then sequence-item contains the 
whole item. For example, if I have:

<dtml-in "[(1,2),(3,4),(5,6)]">
	<dtml-var sequence-item>
</dtml-in>

then I get 2,4,6 when I view this. The 1, 3 and 5 have been assigned to 
sequence-key. Now, if I change the dtml to be this:

<dtml-in "[(1,2,3),(3,4,5),(5,6,7)]">
	<dtml-var sequence-item>
</dtml-in>

then I get
(1,2,3)(3,4,5)(5,6,7)

which is what I would expect. I think the reason for this behaviour is to 
do with iterating over dictionaries, but I'm not sure. The problem I have 
is this: I have code which retrieves data from a database, and the result 
is a list of tuples, with each tuple corresponding to a record, and each 
item in the tuple corresponding to a field. I don't know in advance how 
many fields will be in the record. I want to iterate over the records and 
fields, wrapping them in a html table. If the database I'm talking to 
happens to return a list of records with two fields, ie a tuple of two 
items, I have to handle this differently than any other case, which makes 
for some ugly code. I haven't been able to find any way to avoid this, 
unless I'm missing something. Any information would be greatly appreciated.

Regards,