Attributes
- Last UpdatedJan 28, 2025
- 11 minute read
The Attributes section defines what attributes to be included in the report, how to render the attribute header rows and how to render the cells in the intersection between attributes and classes.
The syntax for Attributes definition is:
<Attributes permissibleOnly="true" maturityLevel="10" where="!./@obsolete" >
...
</Attributes>
|
Element |
Property |
Description |
|---|---|---|
|
Attributes |
The containing element for OrderBys, Headers and Columns. All expressions supplied for property values on this element will be resolved in the context of the ClassLibrary node (see Context nodes and expression syntax). |
|
|
permissibleOnly |
An optional Boolean expression controlling whether to only include Attributes that are permissible for one or more of the Classes in the sheet If not specified, the default value will be false, i.e. include all Attributes from the target Class Library, whether they are permissible for the target Classes, or not |
|
|
maturityLevel |
An optional Integer expression controlling what Maturity Level to apply for the Permissible Attributes being rendered Assigning Maturity Levels to Attributes or Permissible Attributes in a Class Library allows you to override the values of @presence and @discipline, depending on the maturity of an object If not specified, the default @presence and @discipline will be applied for the Permissible Attributes. If an expression is applied, that resolves to a positive integer value, @presence and @discipline for the Permissible Attributes will reflect the Maturity Level specified |
|
|
where |
An optional expression defining the criteria for what Attributes to include in the sheet (see Value expressions) This expression is applied on the Attribute Class definitions of the Class Library, i.e. any overrides or variabtes of Permissible Attributes will not be taken into consideration If not specified, all Attributes satisfying permissibleOnly will be included. |
|
|
whereAny |
An optional expression defining the criteria for what Attributes to include in the sheet (see Value expressions). This property will be applied only when permissibleOnly=true As opposed to the where property, the condition specified by this property will be applied for all the Permissible Attributes of the target classes. Any attribute meeting the condition for any of the target classes will be included in the sheet |
|
|
whereAll |
An optional expression defining the criteria for what Attributes to include in the sheet (see Value expressions). This property will be applied only when permissibleOnly=true As opposed to the where property, the condition specified by this property will be applied for all the Permissible Attributes of the target classes. Only attributes meeting the condition for all of the target classes where the attribute is permissible will be included in the sheet |
There is perfectly possible to combine where, whereAny and whereAll conditions in the same report. The conditions will then be applied in an additive manner, meaning all specified conditions must be met for an attribute to qualify
OrderBys
The Attributes/OrderBys section controls in what order the attributes will be rendered.
<Attributes ...>
<OrderBys>
<OrderBy geicl:id="GroupId" condition="./@groupId ?? ZZZZ" direction="Ascending" suppress="$orderByGroupId.isNull()" />
<OrderBy geicl:id="Name" condition="./@name" direction="Ascending" />
</OrderBys>
...
|
Element |
Property |
Description |
|---|---|---|
|
Attributes |
The containing element for OrderBys, Headers and Columns |
|
|
OrderBys |
An optional element holding a collection of OrderBy definitions |
|
|
OrderBy |
geicl:id |
Assigns an identifier to the OrderBy. All items inside a collection element, such as OrderBys must have an identifier which is unique within the containing collection |
|
condition |
An expression resolving to the order by value for each individual attribute. If the expression resolves to an empty value for some of the attributes, you can specify a default value to control how these instances are ordered. If you want to order by the @sortOrder property of the attributes, you should use the expression ./@sortKey. The synthetic property @sortKey holds the value of integer property @sortOrder, but formatted as a sortable string value |
|
|
direction |
Specifies in what direction the ordering should be organised: Ascending (default) Descending |
|
|
suppress |
When the value of this property resolves to true the OrderBy definition will be excluded from the report definition. This feature can e.g. be used select applicable OrderBy definitions, based on conditions derived from context or user input |
|
|
geicl:sortOrder |
An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property, please see the explanation in |
Headers
The Attributes/Header section controls how the attribute headers should be rendered:

Example of Attributes/Header syntax:
<Attributes ...>
<OrderBys> ... </OrderBys>
<Headers style="AttributeHeader" headerStyle="AttributeLegend">
<Header geicl:id="Group" mergeCells="true" header="'Attribute Group →'" value="./@groupId ?? 'Misc'">
<Conditions>
<Condition geicl:id="Common" where="./@groupId == 'Common'">
<Style>
<Fill patternColor="rgb(191,191,191)" />
<Font size="10" color="#000000"/>
</Style>
</Condition>
</Conditions>
</Header>
<Header geicl:id="Name" header="'Attribute\nName →'" value="./@name" suppress="$includeName !== true" >
<Style>
<Alignment textRotation="90"/>
<Font bold="false"/>
</Style>
<HeaderStyle>
<Alignment wrapText="true"/>
</HeaderStyle>
<Conditions>
<Condition geicl:id="Common" where="./@groupId == 'Common'">
<Style>
<Fill patternColor="rgb(191,191,191)" />
<Font size="10" color="#000000"/>
</Style>
</Condition>
</Conditions>
</Header>
</Headers>
|
Element |
Property |
Description |
|---|---|---|
|
Attributes |
The containing element for OrderBys, Headers and Columns |
|
|
Headers |
An containing element for attribute headers All expressions supplied for property values on this element, or any descendant elements, will be resolved in the context of an Attribute class node (see Context nodes and expression syntax) |
|
|
style |
An optional reference to a Named Style definition from the section above. The content of Header@value will be formatted according to the referenced style definition. If not specified, the default value will be taken from PermissibleGrid@style |
|
|
headerStyle |
An optional reference to a Named Style definition from the section above. The content of Header@header will be formatted according to the referenced style definition. If not specified, the default value will be taken from PermissibleGrid@headerStyle |
|
|
freeze |
An optional Boolean expression specifying whether all header rows should be frozen in the resulting sheet. Frozen header rows will not scroll vertically. |
|
|
Header |
Represents a row at the top of the sheet, containing header information for the attributes Which cell to hold the first attribute depends on number of columns occupied by |
|
|
geicl:id |
Assigns an identifier to the Header. All items inside a collection element, such as Headers must have an identifier which is unique within the containing collection |
|
|
header |
An expression to include in the cell preceding the first attribute. This is typically used as a label explaining the content of the row |
|
|
value |
An expression defining the content of the attribute cells in the corresponding row in the sheet. |
|
|
mergeCells |
An optional Boolean expression controlling whether to merge consecutive cells containing identical values If the expression resolves to true, all consecutive cells containing identical values will be merged into one cell visually |
|
|
style |
An optional reference to a Named Style definition from the section above. The content of Header@value will be formatted according to the referenced style definition. If not specified, the default value will be taken from Headers@style |
|
|
headerStyle |
An optional reference to a Named Style definition from the section above. The content of Header@header will be formatted according to the referenced style definition. If not specified, the default value will be taken from Headers@headerStyle |
|
|
freeze |
An optional Boolean expression specifying whether the header row should be frozen in the resulting sheet. A frozen header row will not scroll vertically. A frozen rows pane always starts from the top most row, hence the last header row specified to freeze will dictate how many rows will be frozen. |
|
|
suppress |
When the value of this property resolves to true the Header definition will be excluded from the report definition. This feature can e.g. be used to select applicable Header definitions, based on conditions derived from context or user input |
|
|
geicl:sortOrder |
An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property, please see the explanation in |
|
|
Header/Style |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Header@style property |
|
|
Header/HeaderStyle |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Header@headerStyle property |
|
|
Header/Conditions |
The containing element for optional Condition definitions. Condition definitions can be used to override style settings and optionally the @value of the header row, based on a condition. |
|
|
Condition |
geicl:id |
Assigns an identifier to the Condition. All items inside a collection element, such as Conditions must have an identifier which is unique within the containing collection |
|
where |
A Boolean expression used to control whether the condition is fulfilled (see Context nodes and expression syntax) |
|
|
style |
An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the header row will be an aggregate of the style definitions on the Condition and the Header, with definitions on Condition taking precedence |
|
|
value |
An optional expression defining the content of the header row (see Value expressions). When the condition is fulfilled, the Condition@value will take precedence over the Header@value. The presence of @value has an impact on how Condition statements are applied: When there are more than one Condition having @value, the first fulfilled Condition (in the order of appearance) will be applied. When there are one or more Condition not having @value, all fulfilled Condition will be applied. I.e. the style definitions from all fulfilled Condition without @value will be aggregated together with any style definitions on the Header |
|
|
suppress |
When the value of this property resolves to true the Condition definition will be excluded from the report definition. This feature can e.g. be used to select applicable Condition definitions, based on conditions derived from context or user input |
|
|
geicl:sortOrder |
An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property, please see the explanation in |
|
|
Condition/Style |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @style property |
Columns
The Attributes/Columns section controls how to render the cells in the intersection between attributes and classes:

Example of Attributes/Column syntax:
<Attributes ...>
<OrderBys>
...
</OrderBys>
<Headers style="AttributeHeader" headerStyle="AttributeLegend">
...
</Headers>
<Columns styleWhenPresent="PermissiblePresent" styleWhenAbsent="PermissibleAbsent">
<Column geicl:id="PresenceMarker" valueWhenPresent="'X'" >
<StyleWhenPresent>
<Font color="rgb(174,170,170)"/>
</StyleWhenPresent>
<Conditions>
<Condition geicl:id="Required" where="R == substring(./@presence, 1, 1)" valueWhenPresent="R">
<StyleWhenPresent>
<Font color="rgb(0,0,0)"/>
</StyleWhenPresent>
</Condition>
<Condition geicl:id="Preferred" where="P == substring(./@presence, 1, 1)" valueWhenPresent="P">
<StyleWhenPresent>
<Font color="rgb(64,64,64)"/>
</StyleWhenPresent>
</Condition>
<Condition geicl:id="Optional" where="O == substring(./@presence, 1, 1)" valueWhenPresent="O">
<StyleWhenPresent>
<Font color="rgb(128,128,128)"/>
</StyleWhenPresent>
</Condition>
</Conditions>
</Column>
</Columns>
|
Element |
Property |
Description |
|---|---|---|
|
Attributes |
The containing element for OrderBys, Headers and Columns |
|
|
Columns |
An containing element for attribute columns All expressions supplied for property values on this element, or any descendant elements, will be resolved in the context of a Permissible Attribute node (see Context nodes and expression syntax) |
|
|
styleWhenPresent |
An optional reference to a Named Style definition from the section above. The content of Column@valueWhenPresent will be formatted according to the referenced style definition. If not specified, the default value will be taken from PermissibleGrid@style |
|
|
styleWhenAbsent |
An optional reference to a Named Style definition from the section above. The content of Header@valueWhenAbsent will be formatted according to the referenced style definition. If not specified, the default value will be taken from PermissibleGrid@headerStyle |
|
|
Column |
Represents the cells in the intersection between Attributes and Classes. There will be one cell in each intersection for each Column definition |
|
|
geicl:id |
Assigns an identifier to the Column. All items inside a collection element, such as Columns must have an identifier which is unique within the containing collection |
|
|
valueWhenPresent |
An expression to resolve the cell content for attributes that is permissible for the corresponding class. |
|
|
valueWhenAbsent |
An expression to resolve the cell content for attributes that is not permissible for the corresponding class. The default value is empty. |
|
|
styleWhenPresent |
An optional reference to a Named Style definition from the section above. The content of Column@valueWhenAbsent will be formatted according to the referenced style definition. If not specified, the default value will be taken from Columns@styleWhenPresent |
|
|
styleWhenAbsent |
An optional reference to a Named Style definition from the section above. The content of Column@valueWhenAbsent will be formatted according to the referenced style definition. If not specified, the default value will be taken from Columns@styleWhenAbsent |
|
|
suppress |
When the value of this property resolves to true the Column definition will be excluded from the report definition. This feature can e.g. be used to select applicable Column definitions, based on conditions derived from context or user input |
|
|
geicl:sortOrder |
An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property, please see the explanation in |
|
|
Column/ StyleWhenPresent |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Column@styleWhenPresent property |
|
|
Column/ StyleWhenAbsent |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the Column@styleWhenAbsent property |
|
|
Column/ Conditions |
The containing element for optional Condition definitions. Condition definitions can be used to override style settings and values of the cell, based on a condition. |
|
|
Condition |
geicl:id |
Assigns an identifier to the Condition. All items inside a collection element, such as Conditions must have an identifier which is unique within the containing collection |
|
where |
A Boolean expression used to control whether the condition is fulfilled (see Context nodes and expression syntax) |
|
|
valueWhenPresent |
An optional expression defining the content of the cell for attributes that is permissible for the corresponding class. When the condition is fulfilled, the Condition@valueWhenPresent will take precedence over the Column@valueWhenPresent. The presence of @valueWhenPresent has an impact on how Condition statements are applied: When there are more than one Condition having @valueWhenPresent, the first fulfilled Condition (in the order of appearance) will be applied. When there are one or more Condition not having @valueWhenPresent, all fulfilled Condition will be applied. I.e. the style definitions from all fulfilled Condition without @valueWhenPresent will be aggregated together with any style definitions on the Column |
|
|
valueWhenAbsent |
This setting works similar to valueWhenPresent, except it will be applied for the cell for attributes that is not permissible for the corresponding class. |
|
|
styleWhenPresent |
An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the cell will be an aggregate of the styleWhenPresent definitions on the Condition and the Column, with definitions on Condition taking precedence |
|
|
styleWhenAbsent |
An optional reference to a Named Style definition from the section above. When the condition is fulfilled the effective style for the cell will be an aggregate of the styleWhenAbsent definitions on the Condition and the Column, with definitions on Condition taking precedence |
|
|
suppress |
When the value of this property resolves to true the Condition definition will be excluded from the report definition. This feature can e.g. be used select applicable Condition definitions, based on conditions derived from context or user input |
|
|
geicl:sortOrder |
An integer value that controls the order of siblings in the containing collection. To fully understand the impact of using this property. |
|
|
Condition/ StyleWhenPresent |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @styleWhenPresent property |
|
|
Condition/ StyleWhenAbsent |
An optional inline style definition, supporting the same syntax as . When present, all inline definitions will take precedence over the definitions in a Named Style, referenced by the @styleWhenAbsent property |