Re: dl/dt/dd matching

Subject: Re: dl/dt/dd matching
From: Sean Mc Grath <digitome@xxxxxx>
Date: Tue, 12 Jan 1999 17:36:29 GMT
[Paul Prescod]
>Actually, it very easy to solve if you solve it in the right place. You
>need to augment the input schema (DTD, XSchema, whatever) so that it can
>guide the grouping of things.
>
><!ELEMENT DL (!DTITEM)>
><!GROUP DTITEM (DT, DD)>
>
>Given this document:
>
><DL>
>  <DT>...</DT><DD>..</DD>
></DL>
>
>You get this tree:
>
>DL
>   DLITEM
>      DT
>      DD
>   DLITEM
>      DT
>      DD
>
>David Peterson may have invented this idea in the SGML context, but in
>retrospect it is a straightforward application of the computer science
>concept of "non-terminal" in a context-free-grammar.
>

Three unrelated points about this:-

1) The easiest way to solve it is to do a tree transformation
prior to the tree formatting so that DT,DD pairs get "wrapped"
in a parent element. (In an SGML processing toolkit called
IDM that I wrote a century ago we had "generic transformations"
for this sort of thing and a simplistic query language. Worked
great for formatting dt/dd type problems though.) Kinda like
SAX filters now that I think of it...

2) An analogy can be drawn with Jackson System Design(JSD) in which 
a data source can be parsed w.r.t. many different data models to
generate different parse trees. JSD did not specify a declarative
syntax with which to achieve the "non-terminals" though.

3) An idea struck me reading Dick Grune's (Markup Technologies '98)
book on parsing related to the dt/dd problem. So called
"Van Wijngaarden grammars" could be useful here.
These are genuine "meta-dtd's" in which expressions in the
grammar are used to generate *other*
expressions in the grammar. The thought that struck me
was that you could parse w.r.t. the VW form and achieve
"non-terminals" in the parse tree or just pre-process
the VW form to generate standard extended regular expressions
for a standard DTD parse.

</Sean>
http://www.digitome.com




 XSL-List info and archive:  http://www.mulberrytech.com/xsl/xsl-list


Current Thread