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

Otto Hammersmith otto@ipass.net
Fri, 11 Jun 1999 16:43:28 -0400


[reasons snipped for brevity]

> Proposal
> --------
> 
> _If_ these were the requirements, then I think a reasonable proposal is
> XHTML:
> 
>   http://wdvl.com/Authoring/Languages/XML/XHTML/
> 
>   http://www.w3.org/MarkUp/#future
> 
> XHTML reworks HTML as an XML-compliant language.  Most imporantly, you
> can extend it with new namespaces (like Zope instructions) without
> breaking the DTD, as is the case with ColdFusion et al.

I'll start by saying, this is *absolutely* the right thing to do.  I've
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 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
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.)
 
> 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. :)

> 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.

> 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.

> 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. :)

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>

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.

				-Otto.

(Please CC any replies to me, or I won't see it until the next digest
goes out. :)