[jsr-314-open-mirror] [jsr-314-open] [490-XmlViews] Chapter 11: The JSF XML View Syntax

Blake Sullivan blake.sullivan at oracle.com
Tue Oct 26 17:34:11 EDT 2010


Ed,

I think its a little weird for <f:view> to start rendering stuff, 
especially if its only in XML mode.  Further, such a change is not 
backwards compatible with components that are already outputting the 
DOCTYPE.

I think that the most obvious short term solution is h:doctype.  However 
I think that for the next version we should really look at making things 
simple for people who just want to bang in HTML.  I think that rather 
than going down the whole h: taglib route we really should be looking at 
adding taghandler magic such that page authors can bang out elements in 
the HTML namespace as they see fit and we handle making some of the 
tags, like say <html:head> and <html:body> components if we need to.

If we do that, there are only four cases where we need extra support for 
sending XML constructs for interpretation by the browser:

DOCTYPE
comments
processing instructions
CDATA

Of these, the last three don't come up very often and I can live with 
page authors needing to place these in CDATA blocks for now.  However, 
the first of these appears in every page, so I don't see the CDATA 
workaround as suitable.  So, while I suspect that we didn't need an 
<h:html>, I think an <h:doctype> is the best solution to the problem.

-- Blake Sullivan


On 10/26/10 2:10 PM, Ed Burns wrote:
>>>>>> On Tue, 26 Oct 2010 13:15:18 -0400, Andy Schwartz<andy.schwartz at oracle.com>  said:
> AS>  BTW, regarding Ed's earlier comment:
> EB>  the most important manifestation of that, in my opinion, is the
> EB>  requirement to have *all* elements prefixed.  For example, a
> EB>  proper JSF
> EB>  XML Syntax View would look like this.
> EB>
> EB>  <?xml version="1.0" encoding="UTF-8"?>
> EB>  <weNeedSomeRootElement
> EB>  xmlns:html="http://www.w3.org/1999/xhtml"
> EB>  xmlns:h="http://java.sun.com/jsf/html">
>
>
> AS>  We already have several potential elements/tags that can serve as the
> AS>  root level element, including eg:
>
> AS>  -<html>
> AS>  -<h:html>
> AS>  -<f:view>
>
> Ok, here's what we'll do for JSF XML syntax.
>
> <f:view xmlns="http://www.w3.org/1999/xhtml"
>          xmlns:f="http://java.sun.com/jsf/core"
>          xmlns:h="http://java.sun.com/jsf/html">
>    <html>
>      <h:head><h:title>Title</h:title></h:head>
>      <h:body>
>
>        <h2>HTML elements ok</h2>
>
>      </h:body>
>    </html>
> </f:view>
>
> AS>  As such I don't believe that we need to add yet another element.
>
> Ok, agreed.  It's<f:view>   If you want to do Facelets XHTML, then you
> just put your stuff on the root<html>  element.
>
> AS>  This got me to thinking though...  I believe that we have a fairly big
> AS>  gap in our XML strategy: I don't see any straightforward way to specify
> AS>  a doctypte that will be passed through to the browser.  Earlier Dan had
> AS>  suggested adding new elements for this purpose:
>
>>> 3) All markup declarations should be produced by the component tree
>>> (e.g., XML declaration, doctype, namespaces, CDATA, XML comments, etc)
>>> This means we need the following tags:
>>> f:document
>>> f:doctype
>>> f:comment (why not, it is just xml)
>>> f:cdata
>>> (The prefix is debatable, I'm just throwing it out there)
> AS>  We have added an h:html component in 2.1 - but as far as I can see we
> AS>  haven't addressed the other items.  I think that we minimally need some
> AS>  way to specify the doctype - eg. an h:doctype element since without this
> AS>  the documents rendered in our XML processing mode will be doctype-less.
>
> AS>  BTW, one thing that I am not totally clear on... What value does
> AS>  <h:html>  add over plain old<html>?
>
> It's a resource target, in addition to rendering the<html>  element.
>
> Yes, I read Dan's initial comments but decided to go with the minimal
> set you have seen in the design thus far.  So, I'll not be introducing
> <f:doctype>  in this revision.
>
> Ed
>




More information about the jsr-314-open-mirror mailing list