Analysis Services Scripting Language (ASSL) represents the hierarchy of objects as a set of element types, each of which defines the child elements they can contain.
To represent the object hierarchy, ASSL uses the following XML conventions:
All objects and properties are represented as elements, except for standard XML attributes such as ‘xml:lang’.
Both element names and enumeration values follow the Microsoft .NET Framework naming convention of Pascal casing with no underscores.
The case of all values is preserved. Values for enumerations are also case-sensitive.
In addition to this list of conventions, ASSL also follows certain conventions regarding cardinality, inheritance, whitespace, data types, and default values.
For more information on each element's description, type, cardinality, and default value, as well as any relevant additional information, see Analysis Services Scripting Language XML Elements (ASSL).
When an element has a cardinality that is greater than 1, there is an XML element collection that encapsulates this element. The name of collection uses the plural form of the elements contained in the collection. For example, the following XML fragment represents the Dimensions collection within a Database element:
The order in which elements appear is unimportant.
Inheritance is used when there are distinct objects that have overlapping but significantly different sets of properties. Examples of such overlapping but distinct objects are virtual cubes, linked cubes, and regular cubes. For overlapping but distinct object, ASSL uses the standard type attribute from the XML Instance Namespace to indicate the inheritance. For example, the following XML fragment shows how the type attribute identifies whether a Cube element inherits from a regular cube or from a virtual cube:
Inheritance is generally not used when multiple types have a property of the same name. For example, the Name and ID properties appear on many elements, but these properties have not been promoted to an abstract type.
Whitespace within an element value is preserved. However, leading and trailing whitespace is always trimmed. For example, the following elements have the same text but differing amounts of whitespace within that text, and are therefore treated as if they have different values:
However, the following elements vary only in leading and trailing whitespace, and are therefore treated as if they have equivalent values:
<Description> My text <Description>
ASSL uses the defaults listed in the following table.
XML data type
"" (empty string)
Integer or Long
12:00:00 AM, 1/1/0001 (corresponding to a the .NET Frameworks System.DateTime with 0 ticks)
An element that is present but empty is interpreted as having a value of a null string, not the default value.
Some properties that are specified on an object provide default values for the same property on child or descendant objects. For example, Cube.StorageMode provides the default value for Partition.StorageMode. The rules that ASSL applies for inherited default values are the same as the rules in Decision Support Objects (DSO) 8.0:
When the property for the child object is null in the XML, its value defaults to the inherited value. However, if you query the value from the server, the server returns the null value of the XML element.
It is not possible to determine programmatically whether the property of a child object has been set directly on the child object or inherited.
Some elements have defined defaults that apply when the element is missing. For example, the Dimension elements in the following XML fragment are equivalent even though one Dimension element contains a Visible element, but the other Dimension element does not.
For more information on inherited defaults, see Objects and Object Characteristics.