- From: Arjun Ray <aray@q2.net>
- Date: Thu, 20 Jan 2000 01:47:25 -0500 (EST)
- To: www-html@w3.org
On Tue, 18 Jan 2000, Murray Altheim wrote: > Murray wrote: > > If you want to assist in filling out the AFDR for XHTML, > > and think this is valuable please step up to the plate. > > I explicitly asked if you would assist in writing the AF declarations > for XHTML, and you avoided the question. Should I take this as > unwillingness or merely your wish to keep toying with me? :-) Neither. (I just finished a first pass through the DTD/modules you've prepared for the XHTML distribution - great job!) I'm willing to help, and I'm slowly convincing myself (hope springs eternal!) that the gotchas I see are indeed surmountable. So, I'm going to assume that the following issues can/will be resolved reasonably: (#1 and #2 are major, #3 and #4 not nearly so.) 1. ArchUse PI vs AFDR syntax. http://www.ornl.gov/sgml/wg8/document/1957.htm http://www.ornl.gov/sgml/wg8/docs/n1920/html/clause-A.3.4.html These are functionally and semantically identical. The problem here is that the ArchUse PI, being a PI, will give the Emperor heartburn, while AFDR needs data attributes, which XML doesn't allow. (The AFDR version would have to be a SGML DTD, not an XML DTD.) Something's gotta give. 2. Architectural Processing defaults. The basic feature is that what all are to be considered architectural is controlled from the *instance* (i.e. it's the job of the instance to say how it maps to the architectural "template".) So, this rule from the XHTML Family User-Agent conformance section will have to go: : 4. If a user agent encounters an element it does not recognize, it must : render the element's content. (Are we all really supposed to be so wowser-whipped that only "user agents" which *render* can be conforming?!) This clearly overstates what should happen by default, which is that the content of an unrecognized element should be treated as the content of its containing element. Not only would such be the usual default with architectural processing too (a freebie!), but also architectures will allow us to control such treatment in a more fine tuned manner if needed. Two thought experiments: (a) Why the conformance requirement as stated is absurd <html> <head> <title>A document with an -ahem- "extension"</title> <foo>Since this is in the head section, I obviously never want it rendered!!</foo></head> <body> <p>Hello World</p></body></html> (b) How suppression of (data) content could be correct architecturally <html> <head><title>An "extended" list</title></head> <body> <ul> <foo>You don't know why this is here, I ain't tellin' ya, but for sure it doesn't belong in a garden variety list</foo> <li>Some item</li> <li>Another item</li></ul></body></html> 3. XML vs SGML meta-DTD One of the costs of an XML DTD is the loss of exclusion exceptions. It seems a pity not to be able to express the non-nestability of anchors in an explicitly architectural construction such as a meta-DTD for XHTML. You win some, you lose some, I guess. 4. Names (for architecture control attributes, mainly) We need a set of names, preferably short (IMHO, we have enough verbosity as it is with the XML-ization) but not cryptic (we don't want people going "huh?"), that we can reasonably assume will remain unique in the face of future additions to the XHTML architecture. I'm terrible at dubbing, so everything in the straw proposal here should be taken as indicative only. OK, first the AFDR stuff. ===== <?IS10744 ArcBase html ?> <!NOTATION html PUBLIC "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN" > <!ENTITY html-DTD PUBLIC "-//W3C//DTD XHTML 1.1//EN" "some-URI-at-W3C" > <!ATTLIST #NOTATION html ArcDTD CDATA "html-DTD" ArcDocF NAME "html" ArcFormA NAME "html" ArcNamrA NAME "htnames" ArcSuprA NAME "htsupp" ArcIgnDA NAME "htign" ArcAuto (ArcAuto|nArcAuto) ArcAuto ArcOptSA NAMES "HtModReq HtModOpt" HtModReq NAMES "The Four Horsemen" HtModOpt NAMES "Bunch Of Stuff See Below" > ===== Then, the equivalent ArchUse PI, in an order that should indicate the correspondence ===== <?IS10744:arch html public-id = "-//W3C//NOTATION AFDR ARCBASE XHTML 1.1//EN" dtd-public-id = "-//W3C//DTD XHTML 1.1//EN" dtd-system-id = "some-URI-at-W3C" doc-elem-form = "html" form-att = "html" renamer-att = "htnames" suppressor-att = "htsupp" data-ignore-att = "htign" auto = "ArcAuto" options = "HtModReq HtModOpt" HtModReq = "The Four Horsemen" HtModOpt = "Bunch Of Stuff See Below" ?> ===== What's the deal with ArcOptSA/options = "HtModReq HtModOpt"? The way this works: it allows us to set the name of extra architecture specific support attributes (beyond the ones mandated by the AFDR.) The values of these extra attributes are supposed to be groups of names, and each of these names is supposed to correspond to that of a parameter entity whose replacement text should be taken as "INCLUDE" when assembling the DTD. The upshot is that all of this is shorthand for a whole bunch of <!ENTITY % somename "INCLUDE"> declarations at the top of the DTD. The "trick" here is to list the parameter entity names that will control module inclusion:) The idea behind the HtModReq/HtModOpt division is to express the distinction between required and optional modules. (Don't know if we really need this.) The good news is that Murray has already taken the trouble to produce the modules. The string "The Four Horsemen" is a placeholder (sorry, don't have the actual names handy right now) for the PE names that will activate the Structure, HyperText, Basic Text, and List modules. "Bunch Of Stuff See Below", similarly, would be a listing of the other modules for the particular XHTML family variant. Todo: 1. Prepare modified version of the DTD distribution. 2. Draft prose to explain (a) the definitions (b) usage Stay tuned. Arjun
Received on Thursday, 20 January 2000 01:42:40 UTC