DITA Publishing Extensions

The DITA Publishing Extensions provide an example of how DITA XML element and attribute data can be mapped to the FileNet P8 metadata model. The ability to extract and store this data in metadata provides a powerful query capability and supports the reuse of DITA components.

The DITA standard defines basic information types such as topic, concept, task and reference, which all share a common header information section and prolog section. A subset of this header information is added to the metadata:

A subset of the available prolog information is added to the metadata:

Display Name

<Release> DITA Publishing Extensions

XML Script Name

PublishingExtensions.xml

Installation Type

Recommended

 

The FileNet P8 Metadata Model

The standard DITA types, topic, task, concept, reference and glossentry, all share the same header and prolog info. In FileNet P8, we have defined a base DITA type class named DitaBase which contains this common metadata. Sub-classed from the DitaBase document class, and inheriting it’s metadata, are document classes representing standard DITA types; DitaTopic, DitaConcept, DitaTask, DitaReference and DitaGlossEntry. These sub-classes do not have any addition custom properties but are useful as FileNet P8 supports queries based on specific document class.

The FileNet P8 AddOn also models the DITA types ditamap and bookmap. The document class DitaMap is used to represent the ditamap type in a FileNet P8 repository while the DitaBookMap document class is used for the bookmap type.

The FileNet P8 AddOn has a document class defined to represent ditaval content. This document class, DitaVal, can be used to filter DITA output. This class has no additional custom properties but is used to support queries for ditaval content.

Example FileNet P8 Documents - Content Engine Class Inheritance Hierarchy

CE Class Inheritance Hierarchy.

DitaBase Class Metadata

Property Template Type Description
DitaId String A unique id for a DITA component.

NOTE: FileNet P8 has a system property named “Id” so we cannot use the actual DITA attribute name “Id”. The other metadata also has been given a “Dita” prefix to avoid collision with more generic property names.

DitaTitle String

This is an alternative title for the component. This title provides the title used for navigation windows, table of contents, related links and search results (if provided).

XPATH: topic/title

NOTE: DitaTitle is the title given the content of a DITA component and not the filesystem name of the DITA component. The FileNet P8 property DocumentTitle should be used to store the DITA component file name.

DitaSearchTitle String

This is an alternative title for the component. This title provides the title returned in search result summaries.

XPATH: topic/titlealts/searchtitle

DitaKeywords Multi-Value String

Multiple keywords are allowed in a DITA component so they are stored in a multi-value string property.

XPATH: topic/prolog/metadata/keyword

NOTE: FileNet P8 supports queries for an individual string within a multi-value string property.

DitaAuthors Multi-Value String

Multiple authors are allowed in a DITA component so they are stored in a multi-value string property.

The names of the author are stored in the property. Additional author information available, type, is not stored.

XPATH: topic/prolog/author

DitaAudiences Multi-Value String

Multiple audiences are allowed in a DITA component so they are stored in a multi-value string property.

The names of the audiences are stored in the property.
Additional audience information available, such as type, job and experiencelevel, is not stored.

XPATH: topic/prolog/metadata/audience

DitaCategories Multi-Value String

Multiple categories are allowed in a DITA component so they are stored in a multi-value string property.

XPATH: topic/prolog/metadata/category

DitaProdNames Multi-Value String

Specify the name of the product described in the data.

XPATH: topic/prolog/metadata/prodinfo/prodname

DitaBrands Multi-Value String

Indicate the manufacturer or brand associated with the product.

XPATH: topic/prolog/metadata/prodinfo/brand

DitaPlatforms Multi-Value String

Describes the hardware or software platform associated with the product.

XPATH: topic/prolog/metadata/prodinfo/platform

DitaMap Class Metadata

Property Template

Type

Description

DitaId

String

A unique id for a DITA component.

NOTE: FileNet P8 has a system property named “Id” so we cannot use the actual DITA attribute name “Id”. The other metadata also has been given a “Dita” prefix to avoid collision with more generic property names.

DitaTitle

String

This is an alternative title for the component. This title provides the title used for navigation windows, table of contents, related links and search results (if provided).

XPATH: map/title

NOTE: DitaTitle is the title given the content of a DITA component and not the filesystem name of the DITA component. The FileNet P8 property DocumentTitle should be used to store the DITA component file name.

 

DitaBookMap Class Metadata (inherits from DitaMap)

Property Template

Type

Description

DitaSearchTitle

String

This is an alternative title for the component. This title provides the title returned in search result summaries.

XPATH: bookmap/titlealts/searchtitle

DitaKeywords

Multi-Value String

Multiple keywords are allowed in a DITA component so they are stored in a multi-value string property.

XPATH: //keyword

NOTE: FileNet P8 supports queries for an individual string within a multi-value string property.

DitaAuthors

Multi-Value String

Multiple authors are allowed in a DITA component so they are stored in a multi-value string property.

The names of the author are stored in the property. Additional author information available, type, is not stored.

XPATH: //author

DitaAudiences

Multi-Value String

Multiple audiences are allowed in a DITA component so they are stored in a multi-value string property.

The names of the audiences are stored in the property.
Additional audience information available, such as type, job and experiencelevel, is not stored.

XPATH: //audience/@type

DitaCategories

Multi-Value String

Multiple categories are allowed in a DITA component so they are stored in a multi-value string property.

XPATH: //category

DitaProdNames

Multi-Value String

Specify the name of the product described in the data.

XPATH: //prodname

DitaBrands

Multi-Value String

Indicate the manufacturer or brand associated with the product.

XPATH: //brand

DitaPlatforms

Multi-Value String

Describes the hardware or software platform associated with the product.

XPATH: //platform

DitaPublishers

Multi-Value String

Describes name of the person, or organization responsible for making the content available.

XPATH: //publisher

DITA Relationships

FileNet P8 supports compound document style relationships via the ComponentRelationship class. The class enables:

FileNet P8 Compound Document Structure - Content Engine Object Instance Relationships

CE Object Instance Relationship

In the diagram, each box represents an instance of an object persisted in the FileNet P8 Content Engine. The ComponentRelationship objects hold references to a parent document and a child document. The child document reference may be null if there is no child document version that matches the binding rule of the ComponentRelationship object.

DITA supports reuse at the Topic, Map and conref level.  We could model this in FileNet P8 by sub classing new classes from ComponentRelationship:

DitaTopicref classes are used to model topicref relationships between objects.

DitaMapref classes are used to model submap relationships between objects.

DitaConref classes are used to model conref relationships between objects.
DitaLinkref classes are used to model link relationships between objects.

DitaXref classes are used to model xref relationships between objects.

DitaImageref classes are used to model image relationships between objects

The DitaBaseref class is a base class for all DITA relationship classes and can be used in queries to query for all relationship types.

A parent component can find all direct child components with a single API call off the Document class. One version of the API call returns the ComponentRelationship objects and another version of the call returns the child objects themselves.

A child component can find all parents that reference it with a single API call off the Document class (NOTE: Based on security of user accessing the child object, they may not have view rights on the parent object). One version of the API returns the ComponentRelationship objects and another version returns the parent objects themselves.

By having distinct classes for the relationships, topicref, conref, link, xref and submap, we can support queries limited to objects of those classes. For example, a query from a child component that finds all parent objects that reference a specific conref via the DitaElementId.

In a similar manner, we can query for all parent objects that use a topicref to reference a child component.

Example FileNet P8 Component Relationships - Content Engine Class Inheritance Hierarchy

CE COmpound Relationships

DitaConref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

DitaElementId

String

Element id portion of conref attribute.

DitaTopicref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

DitaId

String

A unique id for a DITA component.

NOTE: This is very useful if a FileNet P8 document contains multiple topics.

DitaMapref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

DitaId

String

A unique id for a DITA component.

 DitaImageref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

 

 

No custom properties on this class

 DitaLinkref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

 

 

No custom properties on this class

 DitaXref Class Metadata (sub-classed from DitaBaseref)

Property

Type

Description

 

 

No custom properties on this class