Skip to main content

Generic Child Bucket Table Placeholder

Placeholder typeText
EntityPlaceholder should work with planning records as well with bucket records
ContextContext supported: _language and _country
Function variablesConfig Id: Id of table was defined inside childBucketTable.xml
Data Querycom.print.accpack.childbuckettable.dataquery.BucketQueryPlugin.getBucketOrPlannedBucket
Data Mappingcom.print.accpack.childbuckettable.datamapping.TableDataMappingPlugin.getChildBucketTable
Data Processingcom.priint.pubserver.comet.bridge.dataprocessing.IndesignTaggedTextFunctions.tableDataToTaggedTextWithOption options: ColumnWidthFromRowWithMostCells,AutoLoadOff

The AutoLoadOff option of Data Processing tells the Publishing Server to skip autoloading placeholders inside table cells on placement.

Consider a table with 100 cells. The plugin fills all cell values during the initial table build. You can also assign individual placeholders to cells to allow reloading specific values if the underlying data changes. This lets users do manual finishing without rebuilding the whole table.

Without AutoLoadOff, all placeholders in the cells would load on placement as part of the template build. Since the plugin already set the initial values, this loading adds no value. Disabling autoload avoids unnecessary requests and improves performance.

If a placeholder performs additional logic, such as loading a sub-template, it still needs to run. In that case, remove AutoLoadOff from the data processing options. See templateId.

XML Configuration File​

The specific XML configuration file childBucketTable.xml should be created in ISON Eclipse, located at: com.priint.accpack.childbuckettable.GenericChildBucketTablePlugin/<client>/default

If <client> is WerkII it will look like this:

User uploaded image

childBucketTable.xml

The sections below document all elements and attributes of childBucketTable.xml. Required attributes are marked with (*).

tableConfiguration(*)​

Defines the overall table behavior, including how child records are collected, whether a header row is generated, and when the optional last column is displayed.

configId (*)
Configuration ID used as the placeholder function variable.

mode (*)
Detects children of a bucket, planned bucket, or sub-planning.

  • bucket: children of a parent bucket or parent planned bucket
  • planning: sub-planning records of a planning record

headerRow
Whether to build the header row. If all header cells are empty, the row is removed.

  • true: builds the header row using the <header> column configuration (default)
  • false: skips the header row; the <header> configuration is ignored

showLastColumnWhen
Controls when to display <lastColumn>.

  • none: does not display the last column (default)
  • any: always displays the last column. <lastColumn> should be defined in the configuration.
  • grouping: only displays when the table contains grouping rows. Keep groups together. <lastColumn> should be defined in the configuration.

Example:

<tableConfiguration configId="Full" mode="bucket" headerRow="true" showLastColumnWhen="none">

rowFilters​

Filters the child buckets before they are added to the table. Multiple filter conditions can be combined using the configured logical operator.

operator (*)

Determines how multiple <rowFilter> conditions are combined.

  • and: includes a row if the child bucket matches all conditions defined by <rowFilter>
  • or: includes a row if the child bucket matches at least one condition defined by <rowFilter>

rowFilter​

Child elements of <rowFilters> define one condition.

sort (*)
Ordering of condition to filter (integer).

entityIdentifier (*)
Entity identifier of the child bucket to filter.

Example:

<rowFilters operator="or">
<rowFilter sort="1" entityIdentifier="article" />
</rowFilters>

groupColumns​

Groups body rows by one or more key values. The <groupColumns> element contains one or more <keyValue> child elements defining the grouping fields.

cellStylePostfix
Appends a postfix to the cell style defined by the <groupFormats>. Useful for applying different cell styles to individual columns without defining additional row formats.

paraStylePostfix
Appends a postfix to the paragraph style defined by the <groupFormats>. Useful for applying different paragraph styles to individual columns while reusing the same row format.

cellValueDelimiter
When grouping by multiple key values, this string delimits each value in the group cell.

groupedSortStrategy
Sort order for grouping rows. Only takes effect when groupedSort is set.

  • asc
  • desc
  • (empty string): keeps the original sort order but still groups records

keyValue(*)​

Child elements of <groupColumns> define one grouping field.

sort (*)
Ordering of value of key value on grouping row (integer).

entityIdentifier (*)
Entity identifier of the key value to filter.

key (*)
Key of the key value to filter.

groupedValue (*)
Which field of key value to grouping. Supports XPath (v1) expressions.

groupedSort
Which field to use for sorting. Supports XPath (v1) expressions. Empty value means no sorting; the grouping rows follow the bucket tree order.

cellValue (*)
Which value to display on grouping row. Supports XPath (v1) expressions. Almost case cellValue is equals to groupedValue but it can be different if you want to display a different value on grouping row.

Example (group by multiple key values):

<groupColumns cellStylePostfix="" paraStylePostfix="" cellValueDelimiter="," groupedSortStrategy="asc">
<keyValue sort="1" entityIdentifier="category_attribute" key="Category 1" groupedValue="@value" groupedSort="@value" cellValue="concat(@keyLabel, ': ', @value)" />
<keyValue sort="2" entityIdentifier="category_attribute" key="Category 2" groupedValue="@value" groupedSort="@value" cellValue="concat(@keyLabel, ': ', @value)" />
</groupColumns>

Example (group by single key value):

<groupColumns cellStylePostfix="" paraStylePostfix="">
<keyValue sort="1" entityIdentifier="attribute" key="attr0070" groupedValue="@value" groupedSort="@value" groupedSortStrategy="asc" cellValue="concat(@keyLabel, ': ', @value)" />
</groupColumns>

columns(*)​

Contains list <column> elements that define the table columns.

hideRowSameValue
Controls whether duplicate rows within a group are hidden.

  • true: hides rows within a group when all cell values in the row are identical
  • false: rows are always shown (default)

column(*)​

Child elements of <columns> element defines header and body cell. Header and body can contain one or more cells. Cells display key value or media asset data.

sort (*)
Display order of the column in the table (integer).

width
Column width in mm.

Header and Body Cells​

These attributes are applied for both <header> and <body> elements.

cellStylePostfix
Appends a postfix to the cell style defined by the <rowFormat>. Useful for applying different cell styles to individual columns without defining additional row formats.

paraStylePostfix
Appends a postfix to the paragraph style defined by the <rowFormat>. Useful for applying different paragraph styles to individual columns while reusing the same row format.

keyValue​

Child elements of <header> and <body> define one cell. Used to display a key value in the table cell.

entityIdentifier (*)
Entity identifier of the key value to filter.

key (*)
Key of the key value to filter.

cellValue (*)
Which field value to display on cell. Supports XPath (v1) expressions.

prefix
Characters added before the cell value. Use HTML or Unicode escaped characters.

suffix
Characters added after the cell value. Use HTML or Unicode escaped characters.

characterStyle
Formatting character style.

placeholderId
Placeholder ID to place inside the cell (Optional).

Example:

<columns hideRowSameValue="false">
<column sort="2" width="20">
<header cellStylePostfix="" paraStylePostfix="">
<keyValue entityIdentifier="category_attribute" key="Table Header 2 (V)" cellValue="@value" placeholderId="" />
</header>
<body cellStylePostfix="" paraStylePostfix="">
<keyValue entityIdentifier="category_attribute" key="Nennleistung (V) [p]" cellValue="@value" placeholderId="" />
<keyValue entityIdentifier="category_attribute" key="Product Annotations n) (V) [p]" cellValue="@value" prefix="&lt;nl&gt;" suffix="" placeholderId="" characterStyle="_N" />
</body>
</column>
</columns>
mediaAsset​

Child elements of <body> define one cell. Used to display an image in the table cell.

entityIdentifier(*)
Entity identifier of the media asset to filter.

cellValue(*)
Use either @url or @file, depending on how the media asset is stored. Only one should be used for a single media asset configuration.

label
Each value is delimited by ";", supports regular expressions with prefix "regexp:" to search image by label.

width(*)
Width in mm

height(*)
Height in mm

placeholderId
Placeholder ID to place inside the cell (Optional).

templateId
Places a sub-template inside the cell instead of a direct image reference (Optional).

placement(*)
Position of the image inside the cell. Values: center, left, or right

caution

When using templateId, remove AutoLoadOff from the data processing options to enable image loading via sub-template.

Example:

<column sort="30" width="30">
<body cellStylePostfix="" paraStylePostfix="">
<mediaAsset entityIdentifier="ArticleAsset" label="PRODUCT_IMAGE" cellValue="@url" placeholderId="" width="30" height="30" placement="center"/>
</body>
</column>

Value Transformation​

Cell values can be transformed before they are written to the table. Two mechanisms are supported.

Static transform (//static_transform)
Transforms a key value to a mapped value using an identifier in staticContent.xml; supports context.

  • cellValue="//static_transform['1']": finds identifier "1" inside staticContent.xml by context
  • cellValue="//static_transform[@value]": finds the identifier by evaluating XPath @value, then looks it up in staticContent.xml using context

Publishing Server plugin method
Calls a custom Publishing Server plugin method. The method receives a KeyValue entity cast from Object:

public String getRangeValue(Object object){
KeyValue kv = (KeyValue)object;
...
}

Plugin reference: plugin(globalName='com.priint.project.demo.DemoPlugin',methodName='getRangeValue')

Placeholder inside cell​

See ChildBucket_StaticContent and ChildBucket_KeyValueById for supported placeholder types.

functionVariables​

This element defines function variables for a placeholder in the table cell. How many variables depend on the placeholder ID configured.

variable​

Child elements of <functionVariables> define one function variable.

name
Name of the function variable - Placeholder option name.

value
Initial value of the function variable - Placeholder option value. Supports XPath (v1) expressions.

ChildBucket_KeyValueById supports an XPath function variable, which is defined as follows:

<column sort="2" width="40">
<body cellStylePostfix="" paraStylePostfix="">
<keyValue entityIdentifier="attribute" key="attr0014" cellValue="concat('¥',@value,'(税抜)')" placeholderId="537688584">
<functionVariables>
<variable name="xpath" value="concat('¥',@value,'(税抜)')" />
</functionVariables>
</keyValue>
</body>
</column>

lastColumn​

Useful when the table has grouping rows. Keeps the grouping row visually connected to its body rows. Only takes effect when showLastColumnWhen is set to any or grouping.

width
Column width in mm.

cellStyle
Cell style applied to the last column.

Example:

 <lastColumn width="1.1" cellStyle="Last"/>

Similar to body columns.

Example:

<footer cellStylePostfix="" paraStylePostfix="">
<keyvalue entityIdentifier="category_attribute" key="Product Annotations (V) [p]" cellValue="@value" placeholderId="" />
</footer>

groupFormats​

Applies to grouping rows only, when the table contains grouping rows.

Example:

<groupFormats>
<rowFormat sort="1" height="7" first="1" next="1" cellStyle="PTHeaderGroup" paraStyle="PTHeaderGroup" />
</groupFormats>

headerFormats​

Applies to the header row only, when headerRow is true.

Example:

<headerFormats>
<rowFormat sort="1" height="7" first="1" next="1" cellStyle="PTHeader" paraStyle="PTHeader" />
</headerFormats>

footerFormats​

Applies to footer rows only, as configured by <footer>.

Example:

<footerFormats>
<rowFormat sort="1" height="7" first="1" next="1" cellStyle="PTBodyFooter" paraStyle="PTBodyFooter" />
</footerFormats>

rowFormats​

Applies to body rows only. The table supports separate formats for header, grouping, body, and footer rows. When override behavior is enabled, the corresponding header, grouping, or footer row uses the row formats defined in <rowFormats> instead of its dedicated format section.
Multiple <rowFormat> elements can be defined to create alternating row styles.
The first and next attributes determine how the formats repeat across body rows.

Example: This example shows two alternating row formats for body rows. odd rows use the first format, and even rows use the second format.

  • Rows: 1, 3, 5, 7, ... use the first format (PTBodyWithoutBackground cell style and PTBody paragraph style)
  • Rows: 2, 4, 6, 8, ... use the second format(PTBodyWithBackground cell style and PTBody paragraph style)
 <rowFormat sort="1" height="7" first="1" next="2" cellStyle="PTBodyWithoutBackground" paraStyle="PTBody"/>
<rowFormat sort="2" height="7" first="2" next="2" cellStyle="PTBodyWithBackground" paraStyle="PTBody" />

overrideFormatHeader
Overrides <headerFormats> with the body row format.

  • true: overrides <headerFormats>; the element is not needed
  • false: does not override (default)

overrideFormatGroup
Overrides <groupFormats> with the body row format.

  • true: overrides
  • false: does not override (default)

overrideFormatFooter
Overrides <footerFormats> with the body row format.

  • true: overrides
  • false: does not override (default)

Example:

<rowFormats overrideFormatHeader="true" overrideFormatGroup="true" overrideFormatFooter="true">
<rowFormat sort="1" height="7" first="1" next="2" cellStyle="PTBodyWithoutBackground" paraStyle="PTBody"/>
<rowFormat sort="2" height="7" first="2" next="2" cellStyle="PTBodyWithBackground" paraStyle="PTBody" />
</rowFormats>