[osis-core] Re: [osis-user] class vs type

Troy A. Griffitts scribe at crosswire.org
Sat Mar 11 13:04:40 MST 2006


Patrick and DM,
	Very good point that it forces discussion about unresolved problems. 
But I'm not convinced we're not suggesting addition of the same thing: 
multiple x- attribute values on the type attribute to solve the problem.

	It seems the same to me:
<tag type="x-multivalue:a:b:c">
and
<tag private="rend:a rend:b rend:c">

I think I'd prefer the syntax of the later, because it preserves 'type' 
to allow something OSIS-valid for tag.

The more fundamental question arises... do we have any tags where it 
would be logical to allow multiple OSIS-valid types?  or "Can a tag be 
of multiple types simultaneously?"  And if so, what does subType mean in 
that context?

I still agree that DM's point is good.  Currently, it's hard to store 
private data in an osis doc, and that might be a good thing.

	-Troy.



Patrick Durusau wrote:
> DM,
> 
> I don't thinks that Tro was implying that he wasn't taking the problem 
> seriously.
> 
> I do think you have a good point about avoiding, to the extent 
> possible,  proprietary extensions that would decrease portability.
> 
> Ultimately that is to no small degree a question of judging the tradeoffs.
> 
> Troy: What do you think about DM's comment in terms of embedding 
> arbitrary data that may not be documented or standardized?
> 
> Hope you are having a great day!
> 
> Patrick
> 
> DM Smith wrote:
> 
>> I think private would be good as a convienent place for a work-ahead, 
>> but I'd be concerned that it be used for a work around without 
>> meaningful discussion here. And I'd be concerned if it became an easy 
>> way out. As it stands, the problems I face and have posted here are 
>> real and have been taken seriously. I think in part because there is 
>> no (good) way to do it in OSIS. I've really appreciated the progress 
>> each version of OSIS has made. I'd like to see that continue.
>>
>> I have worked with a few DTD's now and I am impressed with OSIS. Most 
>> of the other DTDs allow for arbitrary markup that in essence makes a 
>> document proprietary as processing it would require custom routines. 
>> The way OSIS is written right now, only the attributeExtensions are 
>> proprietary.
>>
>> Troy A. Griffitts wrote:
>>
>>> Patrick,
>>>     A while back, we had briefly discussed adding a global 'private' 
>>> attribute to the schema.  Basically, a place for organizations to 
>>> place private use information on any tag.  Not sure where people fell 
>>> on the sides of that issue, but I would be in favor of such an 
>>> attribute.
>>>
>>> o    It would allow me to have a basic valid OSIS document while we 
>>> debate how to move all the private data into best practice OSIS.
>>> o    It would allow helpful runtime information to be stored by our 
>>> engine and still allow schema validation against the document.
>>> o    It would allow any data to be stored (like DM's example) which 
>>> don't directly map to OSIS.
>>>
>>>
>>>
>>> Patrick Durusau wrote:
>>>
>>>> DM,
>>>>
>>>> I take it is your requirement that you be able to have NMTOKENS as 
>>>> the data type for the type attribute?
>>>>
>>>> I don't have any strong objections to space delimited data types so 
>>>> I will pass it along to the core group and see if we can get a 
>>>> consensus on that.
>>>>
>>>> Our next release will be OSIS 2.5 next Fall. I am hopeful we will 
>>>> see some more tools and stylesheets posted in the meantime.
>>>>
>>>> Hope you are having a great day!
>>>>
>>>> Patrick
>>>>
>>>>
>>>>
>>>>
>>>> DM Smith wrote:
>>>>
>>>>>
>>>>>
>>>>> Patrick Durusau wrote:
>>>>>
>>>>>> DM,
>>>>>>
>>>>>> Are you saying that the DTD has a rend attribute that can have 
>>>>>> several possible values at the same time?
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> Yes. Rend is defined as NMTOKENS. Which allows a space separated 
>>>>> list of NMTOKEN.
>>>>> The global attributes on elements in this system are:
>>>>>    id      ID          #IMPLIED
>>>>>    lang    IDREF       #IMPLIED
>>>>>    n       CDATA       #IMPLIED
>>>>>    rend    NMTOKENS    #REQUIRED
>>>>>    type    NMTOKEN     #IMPLIED
>>>>>
>>>>> In some cases rend is not required.
>>>>>
>>>>> I have mapped
>>>>>    this DTD's    OSIS's
>>>>>    id            id
>>>>>    lang          xml:lang
>>>>>    n             n
>>>>>    rend          subType
>>>>>    type          type
>>>>>
>>>>>
>>>>>>
>>>>>> While I don't doubt that is possible, I am not sure why anyone 
>>>>>> would want to do it.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> It does not quite matter why. I am working with a legacy document 
>>>>> that has it and I need to preserve it.
>>>>> It is needed to express that an element belongs to different 
>>>>> classes of presentation simultaneously. See below for more.
>>>>>
>>>>>>
>>>>>> Sounds like a hack to allow poorly written XSLT stylesheets.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> It has nothing to do with XSLT stylesheets. Its for CSS 
>>>>> stylesheets. XSL was originally intended to allow the 
>>>>> transformation and the styling of a document. XSLT only implemented 
>>>>> the transformation aspect. IIRC, it was felt that CSS would do the 
>>>>> job of presentation. I haven't looked at it yet but it looks like 
>>>>> xsl-fo is intended to style a document.
>>>>>
>>>>> The value of the HTML class attribute and this DTD's rend attribute 
>>>>> is that it allows for the separation of presentation and content. 
>>>>> Prior to it, one embedded the presentation directly into the document.
>>>>>
>>>>>>
>>>>>> For example, if I have <q type = "emphasis">, even though I only 
>>>>>> have one value for type, nothing prevents me from having different 
>>>>>> renderings of the contents of <hi> based upon its position in the 
>>>>>> markup tree, for example <hi type="emphasis"> being rendered 
>>>>>> differently when it is a child of <title> from when it is a child 
>>>>>> of <p> versus when it is a child of <q>.
>>>>>
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> This is absolutely true and has no bearing on whether rend has one 
>>>>> value or multiple ones. Or whether having multiple value is of any 
>>>>> value (pun intended).
>>>>>
>>>>> Allowing multiple values allows the expression of different kinds 
>>>>> of roles/dimensions to be used at the same time.
>>>>>
>>>>> For example, we may want an ordered list or an unordered list. And 
>>>>> because nesting is allowed, we may have lists of lists. And any 
>>>>> list in the tree can be either. But what if we want to have 
>>>>> different kinds of ordered lists and unordered lists.
>>>>> Say
>>>>>    revealed - all the children of a node are shown with the parent
>>>>>    initially-hidden- all the children of a node are initially 
>>>>> hidden but stay shown until hidden again
>>>>>    popup - shown for a time when a user expresses interest in them.
>>>>> And, as an processing optimization it is needed to be known whether 
>>>>> the list of children is to not wrap, wrap in a narrow presentation 
>>>>> or a wide presentation.
>>>>>
>>>>> And in this example, it is both possible and reasonable to have a 
>>>>> list of children that have different behaviors.
>>>>> (This is a simplification of real world example of a system I wrote 
>>>>> using CSS. There were other dimensions as well, such as data 
>>>>> source: synthetic, program generated, user input. The HTML document 
>>>>> were simple lists with <ul> and <ol> having multiple class values, 
>>>>> with each class value representing a different concept.)
>>>>>
>>>>> To do this with a single value, I would need one for each possible 
>>>>> combination; in this case a set of 2x3x3=18 different values. (Well 
>>>>> actually 9, because HTML has ul and ol)
>>>>>
>>>>> In the case at hand, the element is a paragraph tag. It is not 
>>>>> clear what the different values are, but let me suppose that they 
>>>>> deal with justification, first-line indentation, subsequent-line 
>>>>> indentation, line spacing, handling of first letter, etc. The 
>>>>> application of these behaviors is entirely unpredictable in the 
>>>>> document, so creating a general purpose stylesheet is out of the 
>>>>> question and a specific one would end up as a complex program that 
>>>>> has too great a knowledge of the document.
>>>>>
>>>>> Since I am dealing with transforming a legacy document into OSIS, I 
>>>>> need a way to preserve the values. I am wondering how. (As a 
>>>>> programmer, I can figure out many work arounds, such as littering 
>>>>> the document with hi elements or replacing spaces with a character 
>>>>> that is not allowed in NMTOKEN, like ':' type="x-multivalue:a:b:c") 
>>>>> And if this ability will be added to a later version of osis, I 
>>>>> would like to pick a hack that would allow a good path to it tomorrow.
>>>>>
>>>>> In order to separate presentation from structured content, there 
>>>>> needs to be a semantic for deterministically attaching presentation 
>>>>> to content. This is what the class and rend attribute provide.
>>>>>
>>>>>>
>>>>>> Does that catch the gist of the problem or have I misunderstood 
>>>>>> the issue? (It is 5 AM local time so the latter is entirely 
>>>>>> possible.)
>>>>>>
>>>>>> Hope you are having a great day!
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> And I hope you are having a good and full night of sleep.
>>>>>
>>>>> --DM
>>>>>
>>>>>>
>>>>>> Patrick
>>>>>>
>>>>>>
>>>>>> DM Smith wrote:
>>>>>>
>>>>>>> In html elements define a class attribute which indicates that a 
>>>>>>> particular element in its context belongs to a class of that 
>>>>>>> element. The primary use of this is to indicate where styles can 
>>>>>>> be attached. It appears that type can be used for the same 
>>>>>>> purpose, but not quite. In html, class is defined as "class    
>>>>>>> space separated list of classes" It's type is CDATA, but in 
>>>>>>> spirit is NMTOKEN. What this allows is for an element to be 
>>>>>>> cross-classified. That is more than one class can apply.
>>>>>>>
>>>>>>> However in OSIS there is only one type "word" that can be used.
>>>>>>>
>>>>>>> I am working to convert an xml document to OSIS. This document's 
>>>>>>> DTD defines an attribute, rend, in much the same way as class, in 
>>>>>>> that it is a "role" to which style should be applied, with the 
>>>>>>> possibility of several "roles".
>>>>>>>
>>>>>>> What is the proper way to do this?
>>>>>>>
>>>>>>> I can figure out several ways to do this but none seem quite 
>>>>>>> right. For example, artificially, I can nest <hi> elements to 
>>>>>>> achieve a similar, but not quite the same result.
>>>>>>>
>>>>>>>
>>>>>>>
>>>>>>
>>>>>
>>>>>
>>>>>
>>>>
>>>
>>>
>>>
>>
>>
>>
> 



More information about the osis-core mailing list