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 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
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. 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 |
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. |
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. 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 |
FileNet P8 supports compound document style relationships via the ComponentRelationship class. The class enables:
FileNet P8 Compound Document Structure - Content Engine Object Instance Relationships
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
Property |
Type |
Description |
DitaElementId |
String |
Element id portion of conref attribute. |
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. |
Property |
Type |
Description |
DitaId |
String |
A unique id for a DITA component. |
Property |
Type |
Description |
|
|
No custom properties on this class |
Property |
Type |
Description |
|
|
No custom properties on this class |
Property |
Type |
Description |
|
|
No custom properties on this class |