ASSL XML 约定

Analysis Services 脚本语言 (ASSL) 将对象的层次结构表示为一组元素类型,其中每个类型都定义它们可以包含的子元素。

若要表示对象层次结构,ASSL 使用以下 XML 约定:

  • 除标准 XML 属性(如“xml:lang”)外,所有对象和属性都表示为元素。

  • 元素名称和枚举值都遵循 Pascal 大小写的 Microsoft .NET Framework 命名约定,且没有下划线。

  • 保留所有值的事例。 枚举的值也区分大小写。

除了此约定列表之外,Analysis Services 还遵循有关基数、继承、空格、数据类型和默认值的某些约定。

基数

当元素具有大于 1 的基数时,有一个封装此元素的 XML 元素集合。 集合的名称使用集合中包含的元素的复数形式。 例如,以下 XML 片段表示 Dimensions 元素中的 Database 集合:

<Database>

...

<Dimensions>

<Dimension>

...

</Dimension>

<Dimension>

...

</Dimension>

</Dimensions>

</Database>

``

元素显示的顺序不重要。

继承

当存在具有重叠但明显不同属性集的不同对象时,将使用继承。 此类重叠但不同的对象的示例包括虚拟多维数据集、链接多维数据集和常规多维数据集。 对于重叠但不同的对象,Analysis Services 使用 XML 实例命名空间中的标准 type 属性来指示继承。 例如,以下 XML 片段显示属性如何 type 标识元素 Cube 是从常规多维数据集继承还是从虚拟多维数据集继承:

<Cubes>

<Cube xsi:type="RegularCube">

<Name>Sales</Name>

...

</Cube>

<Cube xsi:type="VirtualCube">

<Name>SalesAndInventory</Name>

...

</Cube>

</Cubes>

``

当多个类型具有相同名称的属性时,通常不会使用继承。 例如,这些 Name 属性 ID 出现在许多元素上,但这些属性尚未提升为抽象类型。

空格

将保留元素值中的空格。 但是,始终剪裁前导空格和尾随空格。 例如,以下元素具有相同的文本,但该文本中的空格量不同,因此被视为它们具有不同的值:

<Description>My text<Description>

<Description>My text<Description>

``

但是,以下元素仅在前导空格和尾随空格中有所不同,因此被视为它们具有等效值:

<Description>My text<Description>

<Description> My text <Description>

``

数据类型

Analysis Services 使用以下标准 XML 架构定义语言 (XSD) 数据类型:

Int
-231 到 231 - 1 范围内的整数值。

Long
-263 到 263 - 1 范围内的整数值。

String
符合以下全局规则的字符串值:

  • 控件字符被剥离。

  • 将剪裁前导空格和尾随空格。

  • 保留内部空白。

NameID 属性对字符串元素中的有效字符有特殊限制。 有关和ID约定的其他Name信息,请参阅 ASSL 对象和对象特征

DateTime
DateTime.NET Framework 中的结构。 值 DateTime 不能为 NULL。 数据类型支持 DataTime 的最低日期为 1601 年 1 月 1 日,可供程序员使用 DateTime.MinValue。 支持的最低日期表示缺少值 DateTime

Boolean
仅包含两个值的枚举,例如 {true、false} 或 {0, 1}。

默认值

Analysis Services 使用下表中列出的默认值。

XML 数据类型 默认值
Boolean
String “” (空字符串)
IntegerLong 0(零)
Timestamp 12:00:00 AM,1/1/0001(对应于带有 0 刻度的 .NET Framework System.DateTime

存在但为空的元素被解释为具有 null 字符串的值,而不是默认值。

继承的默认值

在对象上指定的某些属性为子对象或子代对象上的相同属性提供默认值。 例如, Cube.StorageMode 提供默认值 Partition.StorageMode。 Analysis Services 适用于继承的默认值的规则如下所示:

  • 当子对象的属性在 XML 中为 null 时,其值默认为继承值。 但是,如果从服务器查询值,服务器将返回 XML 元素的 null 值。

  • 无法以编程方式确定子对象的属性是直接在子对象上设置还是继承。

某些元素定义了在缺少元素时应用的默认值。 例如,Dimension即使一个元素包含一个元素,但另DimensionDimensionVisible元素并不相等,以下 XML 片段中的元素也是等效的。

<Dimension>

<Name>Product</Name>

</Dimension>

<Dimension>

<Name>Product</ Name>

<Visible>true</Visible>

</Dimension>

有关继承的默认值的详细信息,请参阅 ASSL 对象和对象特征