
Jon Noring <jon@noring.name> writes:
Brad Collins wrote:
Key to the Rosetta Stone is setting up a universal "metavocabulary" to describe common document structures. Now, I have no illusion this will be easy -- it will not be easy -- it will be damn hard to do right. Then there's the issue of the granularity of the metavocabulary -- how fine with document structure does one go -- and what types of documents will be targeted?
But it is possible as long as people can make the distinction between description and meaning. We might agree to call something the same thing, but not agree on what it means. This is a good thing to work towards. XHTML isn't a bad basic, universal structural language, but it has no way of dealing with semantic markup. This is why Docbook and TEI are becoming increasingly popular, they provide a way of semantically describing a text. A lot of semantic markup won't be displayed to the end user at all. This is as it should be. Wikipedia is a good example of over-linking to articles which often do nothing to help explain the concept being described by the article or are actually related terms. Are most of these links generated automatically? The links in the jrank edition of the 1911 Encyclopædia Britannica is another example of pointless automatically generated links. The main purpose of semantic tagging is for indexing and search. If all texts marked Personal Names, Place Names, Event Names, and names of Works (books, serials, etc) we could build applications which would provide a far richer user experience. Search services could then provide fine-grained searching of a particular text, rather than just pointing to a document. I don't think that PG should take on the job of doing this kind of markup.... PG has enough on it's plate as it is :)
By and large CSS was not designed for the purpose of assigning structural semantics to tags. CSS does have the 'display' property which assigns, at a very rudimentary level, some critical structural semantics (block, inline, table, list). But as we know, the allowed 'display' values are quite limited -- they don't, and in practical sense cannot, assign some critical semantics such as hypertext links, embedded images and objects (XLink is the vocabulary-agnostic solution for these particular things.) There is no CSS 'display' property for section headers, for example (in CSS, a header has to be treated as simply a kind of "block-level" tag), yet it is clear for text-to-speech that section headers be specifically identified as such, and not lumped in with paragraphs.
Then there's the issue that CSS is intended for *styling* during presentation (by and large visual styling). That is its purpose -- it's not designed to be a "Rosetta Stone" for conveying detailed structural information.
I was thinking along the lines of creating a new CSS module which would allow XPath as an alternative to CSS Selectors, and then create semantic css elements. I suppose you could declare at the beginning of a style sheet it is semantic or style and which selector type you want to use. This is just off the top of my head but you could then have something like this in the stylesheet (the XPATH is probably not correct): //p/ string("Scrooge") { semantic-type : personal-name used-for : Ebenezer Scrooge defined-by : bxid://aut:OSE0-1157 url : http://chenla.org/blah/blah/Scrooge.html scope-note : "Ebenezer Scrooge is the miserly old man visited by the ghost of his dead partner Jacob Marley in Charles Dicken's A Christmas Carol." } I think it's an interesting idea, but it would require adoption by each browser which is a long shot at best. I think it's more practical to define a master XML text and then let people apply markup to a locals copy which would act as a layer. Multiple layers could be merged together with something that works like diff and patch.... This would work just like ARCH (a version control system like CVS) -- all local copies are branches which you can keep private, merge with the orignal, or branch the version into a new edition. b/ -- Brad Collins <brad@chenla.org>, Bangkok, Thailand