2.4.6 The faceting Element

faceting => layer[layers1]* cross layer[layers2]*

cross => (unity | nest) (unity | nest)

unity => EMPTY

nest => variableReference[vars]+

variableReference :ref=ref (sourceVariable | derivedVariable) => EMPTY

layer
   :variable=ref (sourceVariable | derivedVariable)
   :value
   :visible=bool?
   :method[layer_method]=(nest)?
   :titleVisible=bool?
=> EMPTY

The faceting element describes the row, column, and layer structure of the table. Its cross child determines the row and column structure, and each layer child (if any) represents a layer. Layers may appear before or after cross.

The cross element describes the row and column structure of the table. It has exactly two children, the first of which describes the table’s columns and the second the table’s rows. Each child is a nest element if the table has any dimensions along the axis in question, otherwise a unity element.

A nest element contains of one or more dimensions listed from innermost to outermost, each represented by variableReference child elements. Each variable in a dimension is listed in order. See Variable Elements, for information on the variables that comprise a dimension.

A nest can contain a single dimension, e.g.:

<nest>
  <variableReference ref="dimension0categories"/>
  <variableReference ref="dimension0group0"/>
  <variableReference ref="dimension0"/>
</nest>

A nest can contain multiple dimensions, e.g.:

<nest>
  <variableReference ref="dimension1categories"/>
  <variableReference ref="dimension1group0"/>
  <variableReference ref="dimension1"/>
  <variableReference ref="dimension0categories"/>
  <variableReference ref="dimension0"/>
</nest>

A nest may have no dimensions, in which case it still has one variableReference child, which references a derivedVariable whose value attribute is constant(0). In the corpus, such a derivedVariable has row or column, respectively, as its id. This is equivalent to using a unity element in place of nest.

A variableReference element refers to a variable through its ref attribute.

Each layer element represents a dimension, e.g.:

<layer value="0" variable="dimension0categories" visible="true"/>
<layer value="dimension0" variable="dimension0" visible="false"/>

layer has the following attributes.

Attribute: variable

Refers to a sourceVariable or derivedVariable element.

Attribute: value

The value to select. For a category variable, this is always 0; for a data variable, it is the same as the variable attribute.

Attribute: visible

Whether the layer is visible. Generally, category layers are visible and data layers are not, but sometimes this attribute is omitted.

Attribute: method

When present, this is always nest.