[Zope] DTML reformulated as XML (was RE: [Zope] <% ... %> ?)

Paul Everitt paul@digicool.com
Sat, 12 Jun 1999 05:51:27 -0400


Otto Hammersmith wrote:
> I'll start by saying, this is *absolutely* the right thing to do.  I've

Hmm, I don't get that reaction often these days. :^)

> been mulling over this exact idea, but haven't had the time to post
> something to the list. (Not that I've been playing with Zope overly
> long.)

I'd like to make sure everyone agrees on the goals, though.  Just like
the idea of "Python Methods" aka script objects, I think everyone wants
a change, but perhaps for different reasons.
 
> I do want to point one thing out, though: adding namespaces does break
> the DTD.  Currently there is no way to validate a document that uses

Hmm, didn't realize that.

> namespaces.  This will be fixed, eventually.  Until then, you just have
> to live with well-formed but not valid documents.
> (Well, you can define a special DTD that defines the namespace prefix as
> well, but then that defeats the ability to change the namespace prefix.)

Right.
 
> > Why?
> >
> > 1) Alledgely it is the future of HTML.
> >
> > 2) Becoming well-formed means the authors can be given hints before
> > saving changes, and Zope can do smarter things with structured data on
> > the server.
> >
> > Why Not?
> >
> > 1) A number of differences with HTML might drive people off.
> 
> Purely syntactic: <br> becomes <br/> and you can't leave out end tags
> (</p>) it's not so bad.  Well, okay, I imagine there will be a lot of
> griping over the decision of enforce lowercase element names. :)

The bit about:

<select name="foo">
<option selected>Splat
</select>

...not working, as attributes (selected) can't be minimed is, erm,
weird.
 
> > 2) It isn't here yet.
> 
> Simple transformation makes XHTML into HTML, again for old clients.
> Probably so simple, it's not worth involving XSL.

Hopefully there wouldn't be much transformation, right?  That is, people
could just write stuff that was readable by clients.
 
> > 3) Zope syntax might not be mappable into XML.
> 
> Close, but not quite.  I'm sure it's possible to create an XML syntax
> that has all the functionality of DTML... however, it might very well
> end up being an ugly unwieldy syntax.

Here's one thing in DTML that would be awfully obscure in XML:

<a href="<!--#var BASE1-->">

That is, putting a tag inside an attribute.  Chris Petrilli and Jim
talked about this today, perhaps as as entity references.
 
> > At any rate, I'd love for someone in the Zope community to march off and
> > take a look at this, then make a proposal for how things should be
> > changed.  As always, patches are accepted. :^)
> 
> I've been meaning to do something like this.  I might just spend some
> time thinking about it this weekend.  Any actual coding probably won't
> happen, though. :)

Understood.  If you produced a clear definition of the goals, some
samples for the syntax, and a list of things that are good and bad about
it, then that would be a major win.
 
> The simple stuff is easy:
> 
> <?xml version='1.0'?>
> <xdtml:xdtml xmlns:xdtml="http://www.zope.org/xdtml"
> xmlns="http://www.w3.org/TR/xhtml1">
> 
> <xdtml:var name='standard_html_header'/>
> <h1><xdtml:var name='title'/></h1>
> <p>This is a paragraph.</p>
> 
> <xdtml:if expr='age &gt; 18'>
> <p>Text not everyone should read.</p>
> </xdtml:if>
> 
> <xdtml:var name='standard_html_footer'/>
> 
> </xtml:xdtml>

I'd love to do a straw vote from the "I hate SSI" crowd: is the above
better?
 
> The if gets really strange when you start adding 'elif' and 'else'
> clauses.  I'll have to think about that one.
> 
> The containing xdtml element is just there as a place to hang the
> namespace declarations off of.  Also, it's there to make the DTML object
> a full-fledged self-contained XML document, needed to make any kind of
> editor useful.

Precisely.  It comes from the namespace declaration at the top.
 
One more thing to muse over is whether other things from XML land should
surface.

For instance, I've long wondered if the ubiquitous var tag should be
broken apart.  People ask: why can't you give me a list of the things
that can go in the var tag?  Why doesn't Zope check to see if my
documents reference subdocuments that no longer exist?  The answer of
"it's too dynamic" feels like less than an answer.

Instead, we could begin granularizing the tags, perhaps into things that
describe better where they came from.

For instance, instead of saying <!--#var standard_html_header-->, which
means insert a subdocument, why not use the XLink syntax from XML?

Just musing...

--Paul