[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]
Subject: Re: Comments on the Generalization section
Having reviewed Gershon’s comments on the Generalization section I have formulated the following treatise on generalization and the implications for what we should and should not do in the 2.0 spec: Generalization is inherent in the DITA specialization design. Because all element type information is specified in @class attributes and attribute specialization information is specified in @specialization
attributes, and because we define the grouped syntax for @props and @base, which removes the need for literal attributes, everything you need to know about a given element instance from a DITA processing perspective (as opposed to a grammar validation perspective)
can be determined from the associated @class and @specialization attributes without regard to element tag names or attribute names. This means that the generalized and respecialized forms of DITA documents are also inherent, meaning that there is no need to explicitly specify a transformation process to create the generalized and respecialized
forms of DITA documents because such transforms are both obvious to anyone who might need to create one and the implementation of any such transform is a simple exercise in programming: generalization and respecialization transforms present no particular technical
challenge or non-obvious edge cases. Another way to look at this is the sort of quantum nature of DITA documents: for a given DITA document instance, all of its generalized and respecialized versions exist at the same time as potential ways of
viewing the document and only come into existence when the document is “observed” by writing it to its XML (or HDITA or MDITA) representation or otherwise treating it as concrete XML. Whether you choose to literally generalize or respecialize a DITA document into a new document with different markup details (but equivalent structure and semantics because @class and @specialization say everything
that needs to be said) is entirely an implementation detail of a specific DITA processing environment. Also important is that there is only one right way to view the generalized or respecialized form of a given document: The @class values are unchanged, the @specialization values are unchanged, and element
types and attribute names reflect any values allowed in each element’s @class and @specialization values. That is, two generalized or specialized views of a given DITA document may differ in the tag names and attribute names they reflect but their DITA-defined
semantics are unchanged (and cannot be changed because @class and @specialization convey all DITA-defined semantics for element types and attributes). Given that, there is no reason for the DITA specification to define literal generalization and retransformation processes and thus no reason to have normative rules for them. This is so both because the DITA
specification should not define transformation processes at all and because there is nothing that requires normative statements because generalization and respecialization are inherent in the specialization facility design. There is nothing normative you could
say that isn’t a direct consequence of how specialization works. My reading of the current Generalization specification is that it reflects the early days of DITA when the specification reflected the specific way that DITA documents were processed at IBM and then more generally
by DITA Open Toolkit—in that context it makes sense to specify a particular implementation approach to doing generalization. But what the current specification describes is just one of many implementation approaches. Therefore, in the DITA 2.0 specification I think it is only necessary to define generalization and respecialization as inherent properties of DITA documents, direct implications of the specialization facility. The DITA 2.0 specification should not, itself, define any sort of generalization or respecialization process nor should it define any normative requirements for the results of such processes (such as the current
normative rule that you cannot have the same condition name as both an attribute name and a group name in a separate attribute on the same element). In such a discussion of generalization it is probably useful to point out that there are two main use cases for producing new generalized document instances: migration (one-way down translation) and interchange
(round tripping through generalized instances). But the specification of *how* to produce these instances is outside the scope of the DITA spec. The current information specific to generalization and respecialization transforms might be useful as a committee note to serve as guidance to DITA system implementors but really, any engineer implementing
a DITA processing system who understands specialization should immediately see both how generalization is inherent in the specialization facility and how to implement it most appropriately for their users. My specific recommendation: Rewrite the Generalization topic to define and describe it as I’ve outlined above: as an inherent property of DITA documents that may be used in many ways by DITA processors. Remove all discussion of generalization
and respecialization processing, including current normative statements. This basically means making current section 8.4.1 Overview of Generalization the entire Generalization topic and removing 8.4.2 to 8.4.5 (and optionally moving that content to a new committee
note on generalization transformations, if we think one is needed). I am happy to take the action to draft this rework of the Generalization topic. If the TC decides to keep the current generalization content and normative statements, this normative statement is not needed: 068 (410) A single element MUST NOT contain both generalized and specialized values for the same attribute. This is not needed because the grouping syntax for @props already accounts for this case (from 7.4.5 Conditional processing attribute values with groups): are specified in the same group. The following values for the @otherprops attribute are equivalent: Assuming that DITA processors normalize all specializations of @props to their equivalent grouped form (which would be the obvious implementation approach since you have to be able to handle the grouped form
in any case), the case of an attribute and a group with the same name is explicitly handled: You’ll end up with two groups with the same name and their values will be combined per the quoted rule. Thus this case cannot be an error (in the sense that it would
cause some ambiguity about the meaning of the content) and therefore there is no need to make it a normative rule. (The lack of this rule also makes it clearer that normalizing all specializations of @props to their grouped form as an implementation strategy
is the easiest way to ensure you get the correct answer in all cases.) Having said that, as part of a specification for how you want your generalization processor to work, it’s perfectly reasonable to specify that you want this case to be avoided, but that’s part of the specification
of a particular generalization processor, not something that needs to be normatively required even if the DITA spec generally defines generalization processing rules. Cheers, E. _____________________________________________ Eliot Kimber Sr Staff Content Engineer O: 512 554 9368 M: 512 554 9368 LinkedIn | Twitter | YouTube | Facebook From:
dita@lists.oasis-open.org <dita@lists.oasis-open.org> on behalf of Gershon Joseph <gershon@precisioncontent.com> [External Email] Thanks Kris for pulling this out. Adding some missing information and correcting a typo in one of my comments. I updated the table below. Gershon L Joseph |
Senior Information Architect | Precision Content | Phone: +972 (54) 658-3887|
TZ: Jerusalem, Israel (GMT+2) | Email: gershon@precisioncontent.com|
Twitter: @PCASinc |
www.precisioncontent.com Unlock the Knowledge in Your Enterprise™ This email and any files transmitted with it are confidential and intended solely for the use of
the individual or entity to whom they are addressed. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited. Please
notify us by return email if you have received this email in error.
© 2022, Precision Content Authoring Solutions Inc. Toronto, Ontario, Canada
From: kris eberleinconsulting.com <kris@eberleinconsulting.com>
OK, I went through Gershon’s PDF and extracted his comments. Below is a summary:
Best, Kris Kristen James Eberlein Skype: kriseberlein; voice: +1 (919) 622-1501 From:
dita@lists.oasis-open.org <dita@lists.oasis-open.org>
On Behalf Of Gershon Joseph Hi all, I have removed all section except for the Generalization section from the attached PDF. Please review my comments and edits. Kris will put this on the agenda of an upcoming meeting to discuss what to do with
the Generalization content. Cheers, Gershon Gershon L Joseph |
Senior Information Architect | Precision Content | Phone: +972 (54) 658-3887|
TZ: Jerusalem, Israel (GMT+2) | Email: gershon@precisioncontent.com|
Twitter: @PCASinc |
www.precisioncontent.com Unlock the Knowledge in Your Enterprise™ This email and any files transmitted with it are confidential and intended solely for the use of
the individual or entity to whom they are addressed. If you are not the intended recipient you are notified that disclosing, copying, distributing or taking any action in reliance on the contents of this information is strictly prohibited. Please
notify us by return email if you have received this email in error.
© 2022, Precision Content Authoring Solutions Inc. Toronto, Ontario, Canada
|
[Date Prev] | [Thread Prev] | [Thread Next] | [Date Next] -- [Date Index] | [Thread Index] | [List Home]