<?xml version="1.0"?>
<soap-env:envelope
xmlns:soap-env="http://schemas.xmlsoap.org/soap/envelope/"
soap-env:encodingstyle="http://schemas.xmlsoap.org/soap/encoding/">
<soap-env:body>
<executeresponse xmlns="urn:schemas-microsoft-com:xml-analysis">
<return>
<root>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema">
<!-- 结果的 xml 架构定义出现在这里 -->
...
</xsd:schema>
<olapinfo>
<!— 此处是维信息 -->
</olapinfo>
<axes>
<!— 此处是 mddataset 结果坐标轴的轴信息 -->
</axes>
<celldata>
<!— 此处是单元格数据值和属性 -->
</celldata>
</root>
</return>
</executeresponse>
</soap-env:body>
</soap-env:envelope>
xml for analysis 和非 web 应用程序
xml for analysis api 是为 web 应用程序优化的。但是,这并不妨碍面向局域网的应用程序利用此方法。以下应用程序就可以利用这一基于 xml 的 api:
- 要求在客户端和服务器之间具有技术灵活性的客户端/服务器应用程序
- 以多个操作系统为目标的客户端/服务器应用程序
- 不需要有效状态即可增加服务器容量的客户端
附录 b:soap 速查词汇表
简单对象访问协议 (soap) 是一种使用 xml 以可扩展方式来表示数据和命令的行业标准。鉴于 soap 是此规范不可分割的一部分,本部分将提供背景信息并定义 soap 术语。
web 服务
从广泛的意义来说,web 服务是这样一种应用程序:它作为可与其它使用 internet 标准的 web 服务进行集成的服务来提供。它是可通过 url 寻址的资源,并且可以按编程的方式将信息返回给需要使用该信息的客户端。
web 服务具有黑箱功能,无需专门处理某一服务的实现方式即可重复使用此功能。web 服务提供了定义完善的接口,这些接口称为合同,用于描述所提供的服务。web 服务可以使用 soap 来指定其消息的格式。
soap
soap 是一种用于在分散的分布式环境中交换信息的轻量协议。作为一种基于 xml 的协议,它由三个部分构成:
- 定义架构(用于说明消息的内容及处理方式)的信封
- 一组编码规则,用于表达应用程序定义的数据类型的实例
- 表示远程过程调用和响应的约定
下面是一个 soap 请求示例:
相应的数据响应可能如下所示:
web 服务描述语言 (web services description language, wsdl)
随着通信协议和消息格式在 web 社区中的标准化,以结构化方式来描述通信的可能性和重要性也在日益增加。web 服务描述语言 (wsdl) 通过定义 xml 语法将网络服务描述成具有消息交换功能的通信端点的集合,从而满足了这种需要。wsdl 服务定义为分布式系统提供了文档,并且可以用作应用程序通信中所涉及的详细信息的自动化方法。
wsdl 文档将服务定义为网络端点或网络端口的集合。在 wsdl 中,端点和消息的抽象定义已从它们的具体网络部署或数据格式绑定中分离出来。这样就可以重复使用抽象定义:
- 消息 - 对所交换数据的抽象描述
- 端口类型 - 操作的抽象集合
一种特定端口类型的具体协议和数据格式规范构成了一个可重复使用的绑定。一个端口是通过将一个网络地址和一个可重复使用的绑定相关联来定义的;一个端口集合定义一种服务。
要获得 wsdl 完整信息的链接,请参见附录 e。
附录 c: 从 xml for analysis 到 ole db 的映射
由于 xml for analysis 是根据 ole db 中的定义来构建的,您可以通过参考所述领域的 ole db 规范来获得详细信息。
函数映射
下表将 ole db 和 ole db for olap 映射到等价的 xml for analysis 操作。由于有些操作不适用,所以并非所有 ole db 函数都具有 xml for analysis 映射。例如,以导航方法(它们用于处理已收到的行集)为目标的方法将不适用,因为客户端将处理此操作。
| ole db 接口和命令 | xml 实现 |
| icolumnsinfo::getcolumninfo | execute 方法:
properties: content = schema |
| icommandprepare::prepare | execute 方法:
properties: content = none (以便仅验证命令) |
| icommandproperties::getproperties | discover 方法:
requesttype: discover_properties |
| icommandproperties::setproperties | execute 方法:
properties: <指定要更新的属性> 注意:属性必须具有读/写权限。 |
| icommandtext::setcommandtext | execute 方法:
command 参数。 |
| idbinfo::getkeywords | discover 方法:
requesttype: discover_keywords |
| idbinfo::getliteralinfo | discover 方法:
requesttype: discover_literals |