Re: Templates XML conformance

Marcel van der Boom <[email protected]> Thu, 06 May 2004 11:20:13 +0200
Newsgroups gmane.comp.cms.xaraya.ui
Organization Xaraya News Server
Message-ID <[email protected]>

Fournier Daniel wrote:
> The use of XML for Xaraya templates is a nice idea: during the 
> development stage, one can validate them with ordinary XML tools.
> 
> Unfortunatly, Xaraya_Classic theme default.xt template is not XML 
> conformant.
Let alone the module templates.

> For instance, it uses an XML entity (&xar-baseurl;) to reference the 
> site base URL. However this entity is not defined within any ENTITY 
> declaration. How is this entity defined? Is it just a pseudo entity 
> replaced in the PHP processing of the template?
Yes, the entity is parsed and replaced. The only thing it has in common 
with a real entity is the same notation. At some point the 
production/generation of those entities could be built into the 
compiler, but we're not there yet.

> Another XML conformance violation is the DOCTYPE declaration for HTML, 
> which should come before document root element.
so true, and in fact should not even be in the template directly at all 
as far as i am concerned.

> Why not use a true DOCTYPE declaration for the template and modify it to 
> have the right HTML DOCTYPE including the baseurl entity declaration 
> when compiling the template.
the xar:blocklayout tag was introduced not that long ago, as we are 
progressing, things get added along the way. After such a change, we get 
a flood of bugreports from people who use the code with that change but 
havent updated their templates yet, so change will be slow. But you are 
100% right here.

> 
> The template prolog could be:
> 
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE xar:blocklayout
> [
> <!ENTITY xar-baseurl "$xar-baseurl">
> ]>
> <?xar type="page" ?>
> ....
> 
> after compilation:
> 
> <?xml version="1.0" encoding="utf-8"?>
> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" 
> "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"
> [
> <!ENTITY xar-baseurl "http://www.myxarsite.com/">
> ]>
> 
Either that or we could use an attribute in the blocklayout tag to 
denote the generated output (my preference) Remember that the entities 
which need declaration are dynamic. The example you gave is a static 
one, but we allow things like:

&xar-modurl-module-type-function;

which gets compiled into:

xarModUrl('module','type','function')

to be able to continue this, we would not only need an xml-parser, but 
also an entity resolver, both of which we do not have.

> Another problem is the multiplication of elements with identical id 
> attributes. For instance: <td id="leftmenus">. ID attributes have to be 
> unique in the document. Probably a class attribute instead of an id (is 
> this id used somewhere in the document processing?) would suffice.
For the "xar:" namespace id's are checked, but because we basically pass 
throught everything else verbatim id's in the html space slip through.
But again, you're right.

In short, you are absolutely right on all points raised and this is all 
planned for, taking into account the existing compatability problems out 
there. Before 1.0 not much will happen in this area. A couple of things 
i have been working on already in separate repositories.


-- 
marcel