Multiple Effectivities and Single Effectivity Features

Astoria provides two strategies to manage conditional processing by effectivity values.

Effectivity can be configured for either Multiple Effectivities or Single Effectivity. The two methods cannot be used simultaneously.

Multiple Effectivities

Multiple effectivities, or client-based effectivity, can involve multiple effectivity XPaths per document. These XPaths are not defined ahead of time, but are specified when a job is submitted.

For publishing based on the DITA standard, if an organization does not choose to use the Astoria Filtering feature for conditional processing, configuring the system for Multiple Effectivities can be an option, because the numerous structured documents used for DITA publishing do not each need to specify the list of possible effectivity values.

When submitting a job using multiple effectivities conditional processing, the user specifies a list of XPath expressions and values for each conditional processing attribute in a repeat group. See Using Multiple Effectivities for Conditional Processing.

Multiple Effectivities can be configured to use exclude values. If the Effectivity Exclusion String defined in the application document is inserted at the start of the effectivity value, elements that match the value are excluded from the output. A user can specify multiple exclude values.

Single Effectivity

Single effectivity is not typically used for publishing based on the DITA standard, which use multiple structured documents based on a variety of DTDs. It can be used for non-DITA documents that are published from a single structured document based on a single DTD.

Single Effectivity involves defining, for each DTD, specific locations within document instances where the effectivity is defined and used. These definitions are specified in the application document. For each DTD, you define two XPaths:
XPath Type Description
Effectivity Definition XPath The XPath that defines the list of all possibly effectivities. For example, let's say you want to filter on car types. So your effectivity values might be:
  • sedan
  • hatchback
  • coupe
  • SUV
  • minivan
  • wagon

Somewhere in your document you need to define this list. That location is defined by this XPath.

For example, your DTD defines an attribute on the root element called effectivityList. Your root element is called doc. So you set Effectivity Definition XPath to /doc/@effectivityList.

Effectivity Scope XPath During the conditional processing of the document, Astoria needs to decide whether to filter out each element. This XPath defines where the effectivity values are for each element, relative to that element.

For example, your DTD also defines an attribute, on several elements, called bodyType. So you set the Effectivity Scope XPath to /@bodyType.

Then, in a structured document instance, include these tags:
  • <doc effectivityList="sedan hatchback coupe SUV wagon minivan">
  • <para bodyType="sedan coupe">…</para> for each element to be filtered.

When submitting a job using single effectivity conditional processing, the user is presented a list of available effectivity values (based on the effectivityList attribute on the root element), and can select the values to use for that particular job. See Using Single Effectivity for Conditional Processing.