Re: Imbedded elements

Richard Light (richard@light.demon.co.uk)
Fri, 30 Jan 1998 11:02:07 +0000


In message <34D1E921.6B73@za.ibm.com>, Trevor Turton
<trevort@za.ibm.com> writes
>Is it legal (and surely it must be) to imbed one element within
>another? To take a common example from current HTML practice, to imbed
>a <TABLE> element within a <FORM> element so that the graphical layout
>of the <FORM> <INPUT> tags can be controlled?
>
>And if so, how does XML resolve a given tag if it occurs within element
>A which is imbedded within element B, and the particular tag happens to
>be defined and valid in both element A and element B? Unlikely today
>when all HTML elements and tags are controlled by a single standards
>body (well, almost). Inevitable in the future as independent
>organisations develop and distribute their own DTDs.

It's no problem. Because XML is well-formed, and doesn't allow any tags
to be omitted, the context of every element is crystal clear. If an XML
processor has encountered <A> followed by <B>, then it knows it is
inside <B>. If an <X> then comes along, the <X> is 'inside' <B>, which
in turn, of course, is 'inside' <A>.

The XML processor must subsequently get an </X>, a </B> and an </A> in
that order to 'back out' of the hierarchy it has created.

This is only an issue in HTML because (a) HTML adopted some fairly
sophisticated tag omission rules from SGML; and (b) every HTML parser
proceeded to ignore this and treat tags as point markers rather than
nodes in a well-defined tree structure.

Richard Light.

Richard Light
SGML/XML and Museum Information Consultancy
richard@light.demon.co.uk