跳转至内容

XML - 数据交换管理/商业智能和 XML

来自维基教科书,开放世界中的开放书籍



上一章 下一章
命名空间 将 MySQL 转换为 XML



学习目标

[编辑 | 编辑源代码]

在本节结束后,对于单个实体,您将能够

  • 为 Cognos ReportNet 创建完全用 XML 编写的报表规范
  • 更新 XML 格式的报表规范。
  • 识别报表规范中的四个主要部分

在 Cognos ReportNet 中创建的每个报表都具有用 XML 编写的规范,因此您可以使用 XML 编辑器对其进行自定义,或者完全用 XML 创建报表规范。

报表规范流程

[编辑 | 编辑源代码]

保存报表并再次打开后,报表规范将从内容存储中提取,如您在图 28.1 中所见。当您编辑它时,更改将保留在客户端机器上,直到您保存它。当您保存报表时,内容存储会更新。


图 28.1 报表规范流程

您可以看到图 28.2 中的 Web 报表示例,该报表可以从 XML 文件生成;



图 28.2 报表示例


报表规范结构中的 XML

[编辑 | 编辑源代码]

报表规范由四个主要部分组成。

  • 报表部分
    • XML 标记
      • <report>
      • <modelConnection>
  • 查询部分
    • XML 标记
      • <querySet>
  • 布局部分
    • XML 标记
      • <layoutList>
  • 变量部分
    • XML 标记
      • <variableList>

至少,报表规范必须包含 <report></report> 标记,以及创作语言和模式信息。


报表部分中的规范标题包含有关以下信息


<report xml:lang="en-us" xmlns="http://developer.sample.com/schemas/report/1/"><!--RS:1.1-->
	<modelConnection name="/content/package[@name='GSR']/model[@name='model']"/>


查询部分包含有关以下信息

  • 立方体元素由 <cube></cube> 标记表示,其中可能包含
    • 事实 (<factList></factList>)。国家、姓名和姓氏是事实。
    • 维度 (<dimension></dimension>) 由级别 (<level></level>) 组成
    • 过滤器 (<filter></filters>) 由条件 (<condition></conditions>) 组成。国家是本报表的过滤器,等于德国。
  • 表格模型包含在 <tabularModel></tabularModel> 标记中。
    • 每个表格模型都包含数据项 (<dataItem></dataItem>),由完全限定的表达式 (<expression></expression>) 组成
  • 报表中的查询部分包含在 <querySet></querySet> 标记中。
  • 查询部分可以包含多个查询,每个查询都包含在 <BIQuery></BIQuery> 标记中。


向报表规范添加页面

  • 您可以向报表添加多个页面。每个页面都包含在 <pageSet> </pageSet> 标记之间。
    • 每个页面都可以包含
      • 主体(必需)
      • 页眉
      • 页脚


向报表添加布局对象

  • 向报表布局添加一个或多个页面后,您可以添加各种布局对象,例如
    • 文本项
    • 列表
    • 图表
    • 交叉表
    • 表格


指定布局对象的样式

  • 您可以使用层叠样式表 (CSS) 属性来确定布局中对象的样式。
  • CSS 值在 <style></style> 标记之间指定。
  • CSS 值可以应用于字体大小、背景颜色等。


向报表添加变量

  • 您可以在报表规范的 <variableList></variableList> 标记之间指定变量,每个变量都包含 <expression></expression> 标记之间的表达式。
  • 我们可以使用包含可能值列表的变量 1,例如值:fr 用于使用法语;


        <variableList>
         <variable name=”Variable1” type=”locale”>
          <expression>ReportLocale()</expression>
           <variableValueList>
            <variableValue value=”fr”/>
           </varialeValueList>
          </variable>
         </variableList>


以下是图 28.3 中报表的完整 XML 文件


<report xml:lang="en-us" xmlns="http://developer.sample.com/schemas/report/1/">
	<!--RS:1.1-->
	<modelConnection name="/content/package[@name='GSR']/model[@name='model']"/>
	<querySet xml:lang="en-us">
		<BIQuery name="Query1">
			<cube>
				<factList>
					<item refItem="Country" aggregate="none"/>
					<item refItem="First name" aggregate="none"/>
					<item refItem="Last name" aggregate="none"/>
				</factList>
			</cube>
			<tabularModel>
				<dataItem name="Country" aggregate="none">
					<expression>[gsrs].[addr].[Country]</expression>
				</dataItem>
				<dataItem name="First name" aggregate="none">
					<expression>[gsrs].[Person].[First name]</expression>
				</dataItem>
				<dataItem name="Last name" aggregate="none">
					<expression>[gsrs].[Person].[Last name]</expression>
				</dataItem>
				<filter>
					<condition>[gsrs].[addr].[Country]='Germany'</condition>
				</filter>
			</tabularModel>
		</BIQuery>
	</querySet>
	<layoutList>
		<layout>
			<pageSet>
				<page name="Page1">
					<pageBody>
						<list refQuery="Query1">
							<listColumnTitles>
								<listColumnTitle>
									<textItem>
										<queryItemRef refItem="Country" content="label"/>
									</textItem>
								</listColumnTitle>
								<listColumnTitle>
									<textItem>
										<queryItemRef refItem="First name" content="label"/>
									</textItem>
								</listColumnTitle>
								<listColumnTitle>
									<textItem>
										<queryItemRef refItem="Last name" content="label"/>
									</textItem>
								</listColumnTitle>
							</listColumnTitles>
							<listColumns>
								<listColumn>
									<textItem>
										<queryItemRef refItem="Country"/>
									</textItem>
								</listColumn>
								<listColumn>
									<textItem>
										<queryItemRef refItem="First name"/>
									</textItem>
								</listColumn>
								<listColumn>
									<textItem>
										<queryItemRef refItem="Last name"/>
									</textItem>
								</listColumn>
							</listColumns>
							<style>
								<CSS value="border-collapse:collapse"/>
							</style>
							<XMLAttribute name="RS_ListGroupInfo" value=""/>
						</list>
					</pageBody>
					<pageHeader>
						<block class="reportTitle">
							<textItem class="reportTitleText">
								<text/>
							</textItem>
						</block>
						<style>
							<CSS value="padding-bottom:10px"/>
						</style>
					</pageHeader>
					<pageFooter>
						<table>
							<tableRow>
								<tableCell>
									<textItem>
										<expression>AsOfDate()</expression>
									</textItem>
									<style>
										<CSS value="vertical-align:top;text-align:left;width:25%"/>
									</style>
								</tableCell>
								<tableCell>
									<textItem>
										<text>- </text>
									</textItem>
									<textItem>
										<expression>PageNumber()</expression>
									</textItem>
									<textItem>
										<text> -</text>
									</textItem>
									<style>
										<CSS value="vertical-align:top;text-align:center;width:50%"/>
									</style>
								</tableCell>
								<tableCell>
									<textItem>
										<expression>AsOfTime()</expression>
									</textItem>
									<style>
										<CSS value="vertical-align:top;text-align:right;width:25%"/>
									</style>
								</tableCell>
							</tableRow>
							<style>
								<CSS value="border-collapse:collapse;width:100%"/>
							</style>
						</table>
						<style>
							<CSS value="padding-top:10px"/>
						</style>
					</pageFooter>
				</page>
			</pageSet>
		</layout>
	</layoutList>
</report>


节摘要:由于报表规范遵循 XML 规则,因此它有利于创建和更新标记文件


最终用户希望用日语阅读报表,因此您必须添加日语变量。

华夏公益教科书