Major Additions Planned for DocBook 3.1


From       ndw@nwalsh.com Tue Dec 22 12:44:43 1998
Date:      Mon, 21 Dec 1998 15:57:39 -0500
From:      Norman Walsh <ndw@nwalsh.com>
To:        davenport@berkshire.net
Subject:   DAVENPORT: Major additions planned for DocBook 3.1

Since the OASIS TC meeting in Chicago, the DocBook Technical Committee has been working hard to finalize DocBook 3.1. We expect it to be released in January.

Along with a number of smaller changes, DocBook 3.1 will introduce two new, substantial constructs: QAndASet and MediaObject.

In two following messages, I'll summarize the content models and semantics of QAndASet and MediaObject.

If you have comments, particularly if you think these elements fail to address your needs in these areas, please post them to the list.

                                        Cheers,
                                          norm

P.S. These messages represent my views and not necessarily the views of the entire committee (I feel I have to say that since I'm about to head out of town and I wanted to post these to the public list before I went; the TC didn't get any previews ;-)


Norman Walsh <ndw@nwalsh.com>      | Truth lies within a little
http://nwalsh.com/                 | uncertain compass, but error is
                                   | immense.

From      ndw@nwalsh.com Tue Dec 22 12:44:51 1998
Date:     Mon, 21 Dec 1998 15:58:31 -0500
From:     Norman Walsh <ndw@nwalsh.com>
To:       davenport@berkshire.net
Subject:  DAVENPORT: DocBook 3.1: MediaObject

MediaObject addresses several needs:

  1. including multimedia content other than graphics
  2. providing alternative presentations for multimedia objects (in the simple case, textual descriptions of graphics)
  3. adding captions to multiple graphics within a figure

In DocBook 3.1, MediaObject (or InlineMediaObject, as appropriate) is allowed anywhere Graphic (InlineGraphic) can occur. In DocBook _5.0_, we plan to remove Graphic and InlineGraphic.

The design goal was to provide the simplest mechanism that would offer the functionality. As additional needs are articulated, the model can be extended.

Generally, a MediaObject consists of at least one VideoObject, AudioObject, or ImageObject. It may also provide any number of alternative objects, including one or more TextObjects.

The intended semantic is that the _first_ element in a MediaObject is the preferred content source. If that source cannot be used, an alternative may be selected. Generally, alternatives are listed in priority order, but stylesheets are free to make other choices besides "the first one that could work".

Under no circumstances will more than one alternative in the MediaObject be presented simultaneously.

The TextObject has two forms, it can be a single Phrase (this would likely suitable for an ALT attribute, for example), or it can be any block of descriptive text desired.


<!ENTITY % local.mediaobject.mix "">
<!ENTITY % mediaobject.mix 
		"VideoObject|AudioObject|ImageObject %local.mediaobject.mix">

<!ELEMENT MediaObject - - (ObjectInfo?,
                           (%mediaobject.mix;),
			   (%mediaobject.mix;|TextObject)*,
			   Caption?)>

<!ATTLIST MediaObject
		%common.attrib;
		%mediaobject.role.attrib;
		%local.mediaobject.attrib;
>

<!ELEMENT InlineMediaObject - - (ObjectInfo?,
                	         (%mediaobject.mix;),
				 (%mediaobject.mix;|TextObject)*)>

<!ATTLIST InlineMediaObject
		%common.attrib;
		%inlinemediaobject.role.attrib;
		%local.inlinemediaobject.attrib;
>

<!ELEMENT VideoObject - - (ObjectInfo?, VideoData)>

<!ATTLIST VideoObject
		%common.attrib;
		%videoobject.role.attrib;
		%local.videoobject.attrib;
>

<!ELEMENT AudioObject - - (ObjectInfo?, AudioData)>

<!ATTLIST AudioObject
		%common.attrib;
		%audioobject.role.attrib;
		%local.audioobject.attrib;
>

<!ELEMENT ImageObject - - (ObjectInfo?, ImageData)>

<!ATTLIST ImageObject
		%common.attrib;
		%imageobject.role.attrib;
		%local.imageobject.attrib;
>

<!ELEMENT TextObject - - (ObjectInfo?, (Phrase|(%textobject.mix;)+))>

<!ATTLIST TextObject
		%common.attrib;
		%textobject.role.attrib;
		%local.textobject.attrib;
>

<!ELEMENT ObjectInfo - - ((Graphic | MediaObject | LegalNotice | ModeSpec 
	| SubjectSet | KeywordSet | ITermSet | %bibliocomponent.mix;)+)
	-(BeginPage)>

<!ATTLIST ObjectInfo
		%common.attrib;
		%objectinfo.role.attrib;
		%local.objectinfo.attrib;
>

<!ENTITY % local.objectdata.attrib "">
<!ENTITY % objectdata.attrib
	"
	--EntityRef: Name of an external entity containing the content
	of the object data--
	EntityRef	ENTITY		#IMPLIED

	--FileRef: Filename, qualified by a pathname if desired, 
	designating the file containing the content of the object data--
	FileRef 	CDATA		#IMPLIED

	--Format: Notation of the element content, if any--
	Format		(%notation.class;)
					#IMPLIED

	--SrcCredit: Information about the source of the image--
	SrcCredit	CDATA		#IMPLIED

	%local.objectdata.attrib;"
>

<!ELEMENT VideoData - O EMPTY>

<!ATTLIST VideoData
		%common.attrib;
		%objectdata.attrib;

	--Width: Same as CALS reprowid (desired width)--
	Width		NUTOKEN		#IMPLIED

	--Depth: Same as CALS reprodep (desired depth)--
	Depth		NUTOKEN		#IMPLIED

	--Align: Same as CALS hplace with 'none' removed; #IMPLIED means 
	application-specific--
	Align		(Left
			|Right 
			|Center)	#IMPLIED

	--Scale: Conflation of CALS hscale and vscale--
	Scale		NUMBER		#IMPLIED

	--Scalefit: Same as CALS scalefit--
	Scalefit	%yesorno.attvals;
					#IMPLIED

		%videodata.role.attrib;
		%local.videodata.attrib;
>

<!ELEMENT AudioData - O EMPTY>

<!ATTLIST AudioData
		%common.attrib;
		%objectdata.attrib;
		%local.audiodata.attrib;
		%audiodata.role.attrib;
>

<!ELEMENT ImageData - O EMPTY>

<!ATTLIST ImageData
		%common.attrib;
		%objectdata.attrib;

	--Width: Same as CALS reprowid (desired width)--
	Width		NUTOKEN		#IMPLIED

	--Depth: Same as CALS reprodep (desired depth)--
	Depth		NUTOKEN		#IMPLIED

	--Align: Same as CALS hplace with 'none' removed; #IMPLIED means 
	application-specific--
	Align		(Left
			|Right 
			|Center)	#IMPLIED

	--Scale: Conflation of CALS hscale and vscale--
	Scale		NUMBER		#IMPLIED

	--Scalefit: Same as CALS scalefit--
	Scalefit	%yesorno.attvals;
					#IMPLIED

		%local.imagedata.attrib;
		%imagedata.role.attrib;
>

<!ELEMENT Caption - - (%textobject.mix;)*>

<!ATTLIST Caption
		%common.attrib;
		%local.caption.attrib;
		%caption.role.attrib;
>

<!ELEMENT MediaObjectCO - - (ObjectInfo?, ImageObjectCO,
			   (ImageObjectCO|TextObject)*)>

<!ATTLIST MediaObjectCO
		%common.attrib;
		%mediaobjectco.role.attrib;
		%local.mediaobjectco.attrib;
>

<!ELEMENT ImageObjectCO - - (AreaSpec, ImageObject, CalloutList*)>

<!ATTLIST ImageObjectCO
		%common.attrib;
		%imageobjectco.role.attrib;
		%local.imageobjectco.attrib;
>

From      ndw@nwalsh.com Tue Dec 22 12:44:55 1998
Date:     Mon, 21 Dec 1998 15:58:12 -0500
From:     Norman Walsh <ndw@nwalsh.com>
To:       davenport@berkshire.net
Subject:  DAVENPORT: DocBook 3.1: QAndASet

QAndASet provides a framework for sets of "Questions and Answers".

A QAndASet can be broken into QAndADivs (with titles). Each set (or division) contains one or more question/answer pairs. Questions are not required to have Answers. Answers can be broken down into subquestions and answers.

A label can be provided for each Question and Answer. Alternatively, "Q:"/"A:" or numbered questions can be specified.

The relevant content model pieces are:


<!ENTITY % local.qandaset.mix "">
<!ENTITY % qandaset.mix
		"%list.class;
		|%linespecific.class;	|%synop.class;
		|%para.class;		|%informal.class;
		|%formal.class;		|Procedure
		|%genobj.class;
		%local.qandaset.mix;">

<!ELEMENT QandASet - - ((%formalobject.title.content;)?,
			(%qandaset.mix;)*,
                        (QandADiv+|QandAEntry+))>

<!ATTLIST QandASet
		DefaultLabel	(qanda|number|none)       #IMPLIED
		%common.attrib;
		%qandset.role.attrib;
		%local.qandset.attrib;>

<!ELEMENT QandADiv - - ((%formalobject.title.content;)?, 
			(%qandaset.mix;)*,
			(QandADiv+|QandAEntry+))>

<!ATTLIST QandADiv
		%common.attrib;
		%qandadiv.role.attrib;
		%local.qandadiv.attrib;>

<!ELEMENT QandAEntry - - (Question, Answer*)>

<!ATTLIST QandAEntry
		%common.attrib;
		%qandaentry.role.attrib;
		%local.qandaentry.attrib;>

<!ELEMENT Question - - (Label?, (%qandaset.mix;)+)>

<!ATTLIST Question
		%common.attrib;
		%question.role.attrib;
		%local.question.attrib;
>

<!ELEMENT Answer - - (Label?, (%qandaset.mix;)*, QandAEntry*)>

<!ATTLIST Answer
		%common.attrib;
		%answer.role.attrib;
		%local.answer.attrib;
>

<!ELEMENT Label - - (%word.char.mix)*>

<!ATTLIST Label
		%common.attrib;
		%label.role.attrib;
		%local.label.attrib;
>


[Note: See the Davenport Group web site.]