设计使用本机 XML 驱动程序的报表
本机 XML 驱动程序概述
注意: 目前,本机 XML 驱动程序仅支持英语、法语、德语和日语。请在“开发人员交流区”检查有关其他语言的信息,网址为 http://www.businessobjects.com/ipl/default.asp?destination=developerzone&language=EN&product=CRJavaProducts&edition=Professional&version=10.0&Partner=IBM
用于 Crystal 产品的本机 XML 驱动程序读取 XML 流并根据相应架构 (XSD) 分析其内容,以导出数据的层次表形式。这样,在您创建报表时 Crystal Reports 就会使用此层次表形式。
注意: 当 Crystal Reports 使用 XML 本身时,该层次表形式将根据内部查询定义直接映射回 XML。XML 从不会被解析到关系表模型中。
您必须指定架构或文档类型定义 (DTD) 以供 XML 驱动程序在分析 XML 流时使用。 驱动程序使用此架构或 DTD 来确定将 XML 数据类型转换为 Crystal 数据类型的方式。有关架构和如何转换数据类型的更多信息,请参见架构。
有关本机 XML 驱动程序的更多信息,请访问位于以下网址的 Developer Zone(开发人员专区):
http://www.businessobjects.com/ipl/default.asp?destination=developerzone&language=EN&product=CRJavaProducts&edition=Professional&version=10.0&Partner=IBM
您可在此站点上找到示例和其他信息。 有关 XML 的一般概述,请参见《Crystal Reports 用户指南》。
入门
您需要配置 CRDB_JavaServer.ini
文件,然后才能在 Crystal Reports 中使用本机 XML 驱动程序。有关参数及其说明的完整列表,请参见CRDB_JavaServer.ini 参数引用。您必须配置的主要参数有 Path、Classpath 和 IORFileLocation。
注意:
- 如果您不想在
CRDB_JavaServer.ini
文件中包含路径信息,则可能需要为 Java 目录设置环境变量。在这种情况下,请创建指向 JDK 位置的 JAVA_HOME 环境变量。 - 对于任何语言中的安装,您都必须验证
CRDB_JavaServer.ini
文件中的路径信息。路径信息必须与 CRDBXMLExternal.jar
和 CRDBJavaServer.jar
文件的实际位置正确匹配。示例文件在路径中使用英文的文件夹名称,可能需要进行修改,才能符合计算机上使用的本地化文件夹名称。
XML 数据源访问类型
在通过选择 XML 驱动程序在 Crystal Reports 中创建新连接时,您可以从多个可能的数据源类型中进行选择。本节将逐个介绍每种类型。有关连接时需要完成的步骤,请参见连接到 XML 数据源。
本地数据源
本地数据源是本地计算机或网络驱动器上的 XML 文件,您可以通过输入路径和文件名与之连接。XML 驱动程序允许您键入完整路径和文件名,您也可以通过在“打开”对话框中进行搜索来选择文件。如果您有用于 XML 文件的架构 (XSD),则可以指定该架构。有关架构和如何使用它们的更多信息,请参见架构。
HTTP(S) 数据源
HTTP(S) 数据源是您可以从 Servlet、ASP 页、JSP 页或动态创建的其他类型的 Web 页访问的 XML 文件或 XML 流。您提供的此类数据源的 URL 可以是 HTTP 也可以是 HTTPS。在使用 HTTPS 时,在 Crystal Reports 或 Crystal Enterprise 中输入的用户 ID 和密码将用于依据基础 HTTP 提供程序进行身份验证。
XML 驱动程序允许您键入 URL 并随后添加身份验证凭据。如果您有用于 XML 文件或 XML 流的架构 (XSD),则可以指定该架构及其身份验证凭据。有关架构和如何使用它们的更多信息,请参见架构。
HTTP(S) 数据源也支持 HTTP 参数。有关更多信息,请参阅HTTP 参数。
Web Service 数据源
Web Service 数据源可以是本地计算机或网络驱动器上的服务,您可以通过输入路径和文件名与之连接;也可以是从 Servlet 或动态创建的 Web 页访问的服务。您提供的此类数据源的 URL 可以是 HTTP 也可以是 HTTPS。响应 XML 文件的架构是通过 Web Service 框架导出的,而不是手动指定的。
可通过 WSDL(Web Service 描述语言,它是描述 Web 服务的标准格式)访问 Web Service 数据源。指定 WSDL 后,该驱动程序会提示您选择要使用的服务、端口和方法。
架构
在使用 XML 驱动程序时,可以指定您所选择的架构 (XSD) 或文档类型定义 (DTD),也可以使用 XML 文档中嵌入的架构信息。架构用于确定如何在 Crystal Reports 中呈现 XML 数据。
注意: 当您指定用于 XML 文件的架构时,将使用指定的架构,而不是 XML 文件中嵌入的或该文件本身引用的架构信息。
下表显示了本机 XML 驱动程序如何将 XML 数据类型映射为 Crystal 数据类型。
XML 类型 | Crystal 类型 |
---|
string | String |
Boolean | Boolean |
Decimal | Number |
float | Number |
Double | Number |
duration | String (Duration:duration) |
dateTime | DateTime |
time | time |
date | Date |
gYearMonth | Date(每月的第一天) |
gYear | Date(每年的第一天) |
gMonthDay | Date(当年日期) |
gDay | Date(当月/当年日期) |
gMonth | Date(当年日期 - 第一天) |
hexBinary | BLOB |
base64Binary | BLOB |
anyURI | String |
QName | String |
NOTATION | String (Notation:notation) |
normalizedString | String |
token | String |
language | String |
NMTOKEN | String |
NMTOKENS | String |
Name | String |
NCName | String |
ID | String |
IDREF | String |
IDREFS | String |
ENTITY | String |
ENTITIES | String |
Integer | Number |
nonPositiveInteger | Number |
negativeInteger | Number |
long | Number |
int | Number |
short | Number |
byte | Number |
nonNegativeInteger | Number |
unsignedLong | Number |
unsignedInt | Number |
unsignedShort | Number |
unsignedByte | Number |
positiveInteger | Number |
anySimpleType | String |
注意: 名称区分大小写。
XML 驱动程序可处理 XML 属性、名称空间、特定数据类型和标记,如下表所述。
XML | 经该驱动程序解析后 |
---|
属性 | 属性包含在以 @ 符号为前缀的列名称中(例如,标记 <a attrib= "valueofattrib "> 变为字段 A@attrib )。 |
名称空间 | 名称空间包含在列名称中(例如,标记 <abc:name> 变为字段 abc:name )。 |
复杂数据类型 | 无论复杂类型元素是否有重复的元素,都被解析为 Crystal Reports 中的表。但仅包含单个简单类型元素的复杂类型除外;在这种情况下,元素将作为一个长字符串返回,其中包含以 <CR> 分隔的元素值列表。 |
List 数据类型 | List 数据类型始终被解析为 String 类型。字符串将包含列表。 |
Union 数据类型 | Union 数据类型返回一个包含 Union 内容的字符串。 |
Mixed 数据类型 | 定义为 Mixed 的数据类型将作为 XML 片段返回,其中将全部标记内容(包括元素本身的标记)作为 MEMO 字段。 |
用 processContents= "skip " 属性定义的类型 | 用 processContents= "skip " 属性定义的类型将作为 XML 片段返回,其中将全部标记内容(包括元素本身的标记)作为 MEMO 字段。 |
用 processContents="lax" 属性定义的类型 | 用 processContents="lax" 属性定义的类型将通过架构解析;如果无法解析,数据将作为 XML 片段返回,其中将全部标记内容(包括元素本身的标记)作为 MEMO 字段。 |
Choice 标记 | 在使用 Choice 标记时,将表示所选路径的枚举选择字段与所有组合选项结合使用。 |
不包含实际值的标记 | 当标记是一个简单类型并且不包含实际值时,将返回 NULL 值。NULL 适用于所有数据类型。 |
当无法确定 XSD 或 DTD 架构的最外层(根)元素时,将显示所有可能的根元素,并且作为数据连接的一部分您必须选择根元素。
HTTP 参数
在选择 HTTP(S) 数据源时,还可以定义 HTTP 参数,以传递给基础 Servlet 或动态创建的 Web 页。这些参数向 Servlet 或 Web 页提供信息以返回正确的 XML 流。这些参数作为 Form 变量传递给基础连接。Form 变量名与 Crystal 参数名相对应(例如,Crystal {?REGION} 参数等同于 Form 变量“REGION”)。
用选定的多个值传递的所有参数都使用同一名称提交多个 Form 变量。请看以下示例:
<p>哪种口味卖得最好?
<input type=checkbox name=flavor value=vanilla>香草<br>
<input type=checkbox name=flavor value=strawberry>草莓<br>
<input type=checkbox name=flavor value=chocolate checked>巧克力<br>
如果您同时选择了巧克力和香草,则将提交两个名为 flavor 的 Form 变量,各个变量的值分别为香草和巧克力,就像在使用 GET 格式的 "http://server/servlet?flavor=Vanilla&flavor=Chocolate"
中一样。通过 Crystal Reports 同时选择了香草和巧克力的{?flavor}
将分别创建相同的 URL 请求。
在 XML 驱动程序中创建 HTTP 参数
- 在“HTTP 参数”屏幕上,单击“添加属性”。
- 在“编辑属性值”屏幕上的“属性”字段中输入参数名称。
- 在“值”字段中以 @Prompt 函数形式输入参数公式。
参数公式
可使用 @Prompt 函数创建参数公式。当您想在 XML 流中实施限制但又不想预设条件值时,该函数十分有用。
该函数的语法如下所示:
@Prompt('message','type',[lov],[MONO|MULTI],[FREE|CONSTRAINED])
语法 | 说明 |
---|
'message' | 此参数是提示消息的文本。文本必须用单引号括起来;例如,'选择一个地区'、'选择一个时期' 或 '选择一个展室'。当完成连接时将在提示框中显示该文本。 |
'type' | 此参数描述该函数返回的数据类型。它可以是以下类型之一: - 'A' 表示字母数字
- 'N' 表示数字
- 'D' 表示日期
指定的数据类型必须用单引用括起来。 |
lov | 此参数提供值列表 (lov)。列表采用硬编码形式;也就是说,您需要输入各个值来创建它。每个值都用单引号括起来并由逗号隔开。整个列表用大括号括起来。例如,{'澳大利亚', '法国', '日本', '英国', '美国'} 。此参数是可选的。 |
MONO | 用户只能从值列表中选择一个值。MONO 是 MONO|MULTI 对的默认值。此参数是可选的。 |
MULTI | 用户可以从值列表中选择多个值。MONO 是 MONO|MULTI 对的默认值。此参数是可选的。 |
FREE | 用户可以输入他们选择的值,也可以从值列表中选择值。FREE 是 FREE|CONSTRAINED 对的默认值。此参数是可选的。 |
CONSTRAINED | 用户必须从值列表中选择值。FREE 是 FREE|CONSTRAINED 对的默认值。此参数是可选的。 |
注意: 对于每个可选参数,如果将其忽略,仍必须输入逗号作为分隔符。
连接到 XML 数据源
选择 XML 作为数据源
- 在 Crystal Reports 中的“文件”菜单上,单击“新建”。
- 单击“使用报表向导”。
- 在“选择向导”列表中,单击“标准”;然后单击“确定”。
- 在“报表创建向导”的“数据”屏幕上,双击“创建新连接”。
- 双击“XML”。
将会出现 XML 对话框。
- 选择 XML 数据源访问类型:
- 通过按照以下某一节中的步骤操作,确定要与之连接的 XML 文件:
连接到本地数据源
- 如果选择“使用本地数据源”,请输入 XML 文件的完整路径和文件名,或使用该字段旁边的按钮搜索该文件。
- 如果要向所选的 XML 文件应用架构,请选择“指定架构文件”。
如果 XML 文件未包含嵌入的架构信息,您必须选择此选项并指定架构。
注意: 在下一屏幕上指定架构的位置和名称。
- 单击“下一步”。
根据上一步所做的选择,您将会看到一个用于指定架构的屏幕,或者您可以单击“完成”按钮。
- 要指定架构文件,请选择“使用本地架构”或“使用 HTTP(S) 架构”并填写旁边的字段。
- 对于“使用本地架构”,请输入架构文件 (XSD) 的完整路径和文件名,或者使用该字段旁边的按钮搜索该文件。
- 对于“使用 HTTP(S) 架构”,请输入指向架构文件 (XSD) 的 URL。
- 单击“下一步”,然后单击“完成”。
连接到 HTTP(S) 数据源
- 如果选择“使用 HTTP(S) 数据源”,请输入指向 XML 文件的 URL。
可以使用 HTTP 或 HTTPS 来定义 URL。
- 如果要向所选的 XML 文件应用架构,请选择“指定架构文件”。
如果 XML 文件未包含嵌入的架构信息,您必须选择此选项并指定架构。
注意: 在下一屏幕上指定架构的位置和名称。
- 单击“下一步”。
- 输入身份验证信息(如果需要的话),然后再次单击“下一步”。
根据您在第 2 步中的选择,您将会看到一个用于指定架构的屏幕,或者用于定义 HTTP 参数的屏幕。如果您看到“HTTP 参数”屏幕,请跳到第 6 步。
- 要指定架构文件,请选择“使用本地架构”或“使用 HTTP(S) 架构”并填写旁边的字段。
- 对于“使用本地架构”,请输入架构文件 (XSD) 的完整路径和文件名,或者使用该字段旁边的按钮搜索该文件。
- 对于“使用 HTTP(S) 架构”,请输入指向架构文件 (XSD) 的 URL。
- 在“HTTP 参数”屏幕上,创建可添加到 URL 中的参数,以限制 XML 文件中返回的结果。
- 单击“添加属性”定义新值。将会出现“编辑属性值”对话框。使用此对话框定义参数名称和公式。有关定义参数的更多信息,请参见在 XML 驱动程序中创建 HTTP 参数。
- 单击“编辑值”更改现有参数。在单击此按钮之前,请选择要编辑的参数。
- 单击“删除属性”删除现有参数。在单击此按钮之前,请选择要删除的参数。
- 在设置完“HTTP 参数”屏幕后,请单击“完成”。
连接到 Web Service 数据源
- 如果选择“使用 Web Service 数据源”,请单击“下一步”继续。
- 要指定 Web Service 文件位置,请选择“使用本地 WSDL”或“使用 HTTP(S) WSDL”并填写旁边的字段。
- 对于“使用本地 WSDL”,请输入 Web Service 文件的完整路径和文件名,或使用该字段旁边的按钮搜索该文件。
- 对于“使用 HTTP(S) WSDL”,请输入指向 Web Service 文件的 URL。
- 单击“下一步”。
根据您在上一步中所做的选择,您将会看到一个用于指定 Web Service、端口和方法的屏幕,或者用于为 Web Service URL 定义身份验证的屏幕。如果您看到“Web Service、端口和方法”屏幕,请跳到第 5 步。
- 输入身份验证信息(如果需要的话),然后单击“下一步”。
- 在“Web Service、端口和方法”屏幕上,从列表中选择一个服务、端口和方法。
- 单击“完成”。
一旦可以看到从 XML 数据源创建的表,您就可以使用它来创建 Crystal 报表,方法与使用任何其他数据源相同。 有关创建 Crystal 报表的更多信息,请参见《Crystal Reports 用户指南》。
CRDB_JavaServer.ini 参数引用
在 CRDB_JavaServer.ini
中出现的参数取决于您所安装的驱动程序。例如,如果您未安装本机 XML 驱动程序,就不会出现 [CRDB_XML]
参数。在最佳情况下,CRDB_JavaServer.ini
文件包含以下参数:
参数名称 | 说明 |
---|
Path | Path 参数值包含 Java 可执行文件的目录。如果您安装了多个版本的 Java 运行时环境,此参数会指向您要使用的版本;例如: PATH=C:\apps\j2sdk1.4.2\bin
此外,路径信息还可以配置为用户或系统环境变量。在这种情况下,如果将 JAVA_HOME 定义为变量,则可以使用 ${JAVA_HOME} ,如以下示例所示: PATH=${JAVA_HOME}\bin
|
Classpath | Classpath 参数值包含以下 .jar 文件的类路径列表: 此外,类路径信息还可以配置为用户或系统环境变量。如果不定义此变量,它将等效于 CLASSPATH=${CLASSPATH} 。 环境变量也可以包含在混合路径中,如以下示例所示: classpath=c:\java\lib\xerces.jar;${CommonProgramFiles}"/Crystal Decisions/2.5/bin/CRDBJavaServer.jar";${CLASSPATH} 注意: 将类路径用于包含空格的长文件夹名称和/或文件名时,确保将它们括在引号内。例如,"C:\Program Files\Common Files\Crystal Decisions\2.5\bin\CRDBJavaServer.jar" 。 |
IORFileLocation | IORFileLocation 参数值提供由 JDBC 驱动程序使用的临时目录。此位置必须存在并且可由系统访问;否则,驱动程序将无法工作。 |
JavaServerTimeout | JavaServerTimeout 参数指定 Java 服务器在自行关闭之前将继续处理请求的最长时间。默认值为 1800 秒(30 分钟)。 |
JVMMaxHeap | JVMMaxHeap 参数指定为了运行 Java 服务器 JVM 可以分配的最大堆空间。默认情况下,此参数设置为 64 MB 堆空间。如果您需要处理大量数据,可将此数值改为更大值。 |
JVMMinHeap | JVMMinHeap 参数指定为了运行 Java 服务器 JVM 可以分配的最小堆空间。默认情况下,此参数设置为 32 MB 堆空间。 |
CacheRowSetSize | CacheRowSetSize 参数指定要在内存中缓存的行数。默认情况下,此参数设置为 100 行。 |
JDBCURL | JDBCURL 参数值是创建新 JDBC 数据连接时将显示在 Crystal Reports 中的默认 JDBC 连接 URL。连接 URL 的确切格式特定于数据库驱动程序,并且由数据库驱动程序供应商提供。 例如,Oracle JDBC 驱动程序的连接 URL 为: jdbc:oracle:thin:@<hostname>:<port>:<sid>
其中: <hostname> 是所连接服务器的 TCP/IP 地址或 TCP/IP 主机名。<port> 是 TCP/IP 端口号。<sid> 是 Oracle 数据库 ID。
|
JNDIURL | JNDIURL 参数值是默认 JNDI 连接 URL,在创建新的 JNDI 数据连接时,它将显示在 Crystal Reports 中。连接 URL 的确切格式特定于数据库驱动程序,并且由数据库驱动程序供应商提供。 |
JDBCUserName | JDBCUserName 是默认用户 ID,在创建新的 JDBC 数据连接时,它将显示在 Crystal Reports 中。 JDBC 驱动程序使用该用户 ID 连接到数据库。 |
JDBCDriverName | JDBCDriverName 是 JDBC 驱动程序的默认完整类名,在创建新的 JDBC 数据连接时,该名称将显示在 Crystal Reports 中。 例如,Oracle JDBC 驱动程序的完整类名为: oracle.jdbc.driver.OracleDriver
|
JNDIUserName | JNDIUserName 是默认用户 ID,在创建新的 JDBC 数据连接时,它将显示在 Crystal Reports 中。 JDBC 驱动程序使用该用户 ID 连接到数据库。 |
JNDIConnectionFactory | JNDIConnectionFactory 参数是 JNDI 服务器的连接工厂的名称。对于 WebLogic,它是 weblogic.jndi.WLInitialContextFactory 。对于 WebSphere,它是 com.ibm.websphere.naming.WsnInitialContextFactory 。 |
JNDIInitContext | JNDIInitContext 参数是在 JNDI 服务器上查找 JNDI 上下文的起始点。例如,您可以为 WebLogic 设置 JNDIInitContext=/ 。该参数会从树的顶端开始搜索。如果您在 WebSphere 节点上创建了连接,则您可以将此参数设置为 cell/nodes/localhost/servers/server1/jdbc。 |
GenericJDBCDriverBehavior | 如果您使用的是通用 JDBC 驱动程序而不是专用驱动程序,GenericJDBCDriverBehavior 参数可指定您要模拟其行为的驱动程序。默认情况下被设置为模拟 DB2 JDBC 驱动程序的行为。保留此设置意味着您要向最终用户公开类似 DB2 JDBC 驱动程序这样的功能。有效值为 DB2 、SQLServer 和 Oracle 。 |
PREREADNBYTE | PREREADNBYTE 参数确定每个逻辑读取操作从 XML 文档读取的字节数。此参数可用于提高效率并且可用来避免一次读取一个字节;它与块读取大小相同。该大小不能太小(至少为 4096)。将该值设置得太大会影响内存使用。默认情况下,此参数设置为 5000。 |
XMLLOCALURL | XMLLOCALURL 参数值是本地 XML 文件的默认连接 URL。在创建新 XML 数据连接时,此默认值将显示在 Crystal Reports 中。 |
SCHEMALOCALURL | SCHEMALOCALURL 参数值是本地架构文件的默认连接 URL。在创建新 XML 数据连接时,此默认值将显示在 Crystal Reports 中。 |
XMLHTTPURL | XMLHTTPURL 参数值是 HTTP XML 文件的默认连接 URL。在创建使用 HTTP(S) 的新 XML 数据连接时,此默认值将显示在 Crystal Reports 中。 |
SCHEMAHTTPURL | SCHEMAHTTPURL 参数值是 HTTP 架构文件的默认连接 URL。在创建使用 HTTP(S) 的新 XML 数据连接时,此默认值将显示在 Crystal Reports 中。 |