Both basically define the same set of combinations. The second is
better because it reflects common practice, and it is easier to
understand.
> * (LI)+ => (LI)* in OL and UL: why?
I have a ToC program that generates nested lists automatically.
Conditions can exist when the following construct can occur:
<UL>
<LI>...
<LI>
<UL>
<UL>
<LI>...
</UL>
</UL>
</UL>
I guess I'm asking what is the best way to solve this problem. This
problem is different than (LI)* since markup is being generated where
UL is a direct child element of UL. The following
<UL>
<LI>
<UL>
<LI>Item
<LI>Item
</UL>
</UL>
gives undesired results. Example Lynx output:
*
+ Item
+ Item
Mosaic does this
* + Item
+ Item
(Looks worse when saving to formatted ascii)
Am I SOL, or is there a way in HTML to handle this case. Current clients
have no problems with the invalid markup, but validators will.
Another(?) way to state the problem is:
Should one be able to have a N+2, or greater, level list be a
child of a Nth level list?
Starting <UL>/<OL> tags would be needed to make a construct asked about
in the question. Therefore, the N+2 list is not really a child but a
descendant.
HTML already allows similiar constructs by allowing Hn elements to
occur in any order (implying arbitrary levels of sections). Should the
same leniency be applied to other elements as well?
--ewh