Tag declaration proposal

[email protected] ((Jochen Stenzel)) Mon, 19 Mar 2001 23:19:18 +0100
Newsgroups perl.perlpoint
Message-ID <[email protected]>
--_=_=_=IMA.BOUNDARY.GAGU06138764=_=_=_
Content-Type: text/plain; charset="iso-8859-1"
Content-Transfer-Encoding: 7bit


Hello,

just another poposal, but there's more code today ;-)

In the mentioned workshop brainstorming, Johan also mentioned "tag
templates". We did not speak about this but I made a note inside.

Templates would be very useful. By now, tags are declared by a simple
hash reference passed to the parser:

   tags => {
            I => 1,
            B => 1,
            ...,
           },

This is ok and works well, but it is only a minimum of information. The
parser can tell now if \I is a tag or not, but it knows nothing about
tag *options* and tag *body*. The parser has to make numerous
assumptions and is doing that on base of the most common case
("everything is to be expected"). With templates, both syntactic and
semantic checks could be improved. What about semantics? Well, a
template can describe everything including which tag options are
permitted and which values they are allowed to have.

More, if a document was written with a certain translator in mind,
using the tags it provides, and shall be processed by another
translator only supporting a subset of the used tags, the current
implementation is in trouble because it cannot process the document.
Well, of course, it *can* if the -all option is used, but as our
workshop paper pointed out this implies that *everything* looking like
a tag has to be handled as a tag. With tag declarations we could
provide a mechanism to add *certain* tags to the set of expected
markups.

Attached you'll find two modules with my current solution. I tried to
find an easy to use way. Configuration files, either precompiled or
read at runtime, seemed not to be sufficient, but I thought it would be
very handy for a translator author to write:

  use PerlPoint::Tags::Basic;
  use PerlPoint::Tags::HTML qw(:links :boxes);

And this should be all. So the modules attached allow to do this. (In
fact, PerlPoint::Tags is the module implementing the mechanism, while
PerlPoint::Tags::Basic illustrates the usage.) Please have a look,
especially as a (potential) translator author. All thoughts are
appreciated.

Thanks

          Jochen















--_=_=_=IMA.BOUNDARY.GAGU06138764=_=_=_
Content-Type: application/x-compressed; name="tag-declarations.tgz"
Content-Transfer-Encoding: base64

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

--_=_=_=IMA.BOUNDARY.GAGU06138764=_=_=_--