ネイティブ XML ドライバを使用するレポートの作成
ネイティブ XML ドライバ概要
注 現在、ネイティブ XML ドライバは、日本語、英語、フランス語、およびドイツ語でのみサポートされます。その他の言語についての情報は、Developer Zone(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 はリレーショナル テーブル モデルに分解されません。
XML ストリームを解析するときは、XML ドライバが使用するスキーマまたは DTD(Document Type Definition)を指定する必要があります。 ドライバはこのスキーマまたは 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 ユーザーズ ガイド』を参照してください。
はじめに
Crystal Reports でネイティブ XML ドライバを使用するには、CRDB_JavaServer.ini
ファイルを設定する必要があります。全パラメータの一覧とその説明については、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)データ ソースは、サーブレット、ASP ページ、JSP ページ、または動的に作成された別のタイプの Web ページからアクセスできる XML ファイルまたは XML ストリームです。このようなデータ ソースには、HTTP または HTTPS のどちらかの URL を指定できます。HTTPS を使用している場合は、Crystal Reports か Crystal Enterprise で入力するユーザー ID とパスワードを使用して、基になる HTTP プロバイダに対する認証を行います。
XML ドライバでは、URL を入力して、後から認証アカウント情報を追加することができます。XML ファイルか XML ストリーム用のスキーマ(XSD)がある場合は、そのスキーマと認証アカウント情報を指定することができます。スキーマとその使用方法に関する詳細は、スキーマを参照してください。
HTTP(S)データ ソースは HTTP パラメータもサポートします。詳細については、HTTP パラメータを参照してください。
Web サービス データ ソース
Web サービス データ ソースは、ローカル マシン、またはパスやファイル名を入力して接続できるネットワーク ドライブにあるサービスです。あるいは、サーブレットや動的に作成された Web ページからアクセスするサービスです。このようなソースには、HTTP または HTTPS のどちらかの URL を指定できます。XML 応答ファイルのスキーマは、手動で指定するのではなく、Web サービス フレームワークから生成されます。
Web サービス データ ソースには WSDL(Web Services Description Language)を通じてアクセスします。WSDL は、Web サービスを記述する際の標準形式です。WSDL を指定したら、ドライバで、使用するサービス、ポート、およびメソッドを選択できます。
スキーマ
XML ドライバを使用する場合は、スキーマ(XSD)または DTD(Document Type Definition)を指定するか、XML 文書に埋め込まれたスキーマ情報を使用できます。スキーマは、Crystal Reports 内で XML データを示す方法を決定するために使用します。
注 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 |
整数 | 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 データ型は、常に文字列型として解決されます。文字列にはリストが含まれます。 |
Union データ型 | Union データ型は、Union のコンテンツを含む文字列を返します。 |
Mixed データ型 | Mixed として定義されるデータ型は、MEMO フィールドとしてタグのコンテンツ全体を含む(要素独自のタグも含む)XML フラグメントとして返されます。
|
processContents= "skip " 属性で定義される型
| processContents= "skip " 属性で定義される型は、MEMO フィールドとしてタグのコンテンツ全体を含む(要素独自のタグも含む)XML フラグメントとして返されます。
|
processContents="lax" 属性で定義される型
| processContents="lax" 属性で定義される型は、スキーマを通じて解決されます。解決できない場合、データは、MEMO フィールドとしてタグのコンテンツ全体を含む(要素独自のタグも含む)XML フラグメントとして返されます。
|
Choice タグ | Choice タグが使用される場所では、すべての組み合わせの和が、選択したパスを示す列挙されたフィールドとともに提供されます。
|
実際の値を含まないタグ | タグが単純型で実際の値を含まない場合、NULL 値が返されます。NULL はすべてのデータ型で受け入れられます。 |
XSD または DTD から最も遠い(ルート)スキーマ要素を確認できない場合は、すべての可能なルートが表示されます。この中から、データ接続の一部となるルートを選択する必要があります。
HTTP パラメータ
HTTP(S)データ ソースを選択した場合は、基になるサーブレットや動的に作成された Web ページに渡す HTTP パラメータを定義することもできます。これらのパラメータは、正しい XML ストリームを返すための情報をサーブレットや Web ページに渡します。パラメータは 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>
“チョコレート”と“バニラ”の両方を選択すると、vanilla と cholate という値を持つ flavor という名前の 2 つの 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' | このパラメータは関数から返されるデータ型を示します。次のいずれか 1 つの値になります。 - 'A' - 英数字
- 'N' - 数字
- 'D' - 日付
指定するデータ型は、一重引用符で囲む必要があります。 |
lov | このパラメータは、値リスト(lov)を提供します。このリストはハードコードされます。つまり、リストは個々の値を入力して作成します。それぞれの値は一重引用符で囲み、コンマで区切ります。リスト全体は大かっこで囲みます。たとえば、{'オーストラリア', 'フランス', '日本', 'イギリス', 'アメリカ'} となります。このパラメータは省略可能です。 |
MONO | ユーザーは値リストから 1 つの値のみを選択できます。MONO は MONO|MULTI ペアのデフォルトです。このパラメータは省略可能です。 |
MULTI | ユーザーは値リストから複数の値を選択できます。MONO は MONO|MULTI ペアのデフォルトです。このパラメータは省略可能です。 |
FREE | ユーザーは好きな値を入力するか、あるいは値リストから値を選択することもできます。FREE は FREE|CONSTRAINED ペアのデフォルトです。このパラメータは省略可能です。 |
CONSTRAINED | ユーザーは値リストから 1 つの値を選択する必要があります。FREE は FREE|CONSTRAINED ペアのデフォルトです。このパラメータは省略可能です。 |
注 省略可能な各パラメータについては、引数を省略する場合でも、区切り文字としてコンマを入力する必要があります。
XML データ ソースの選択
XML をデータ ソースとして選択する
- Crystal Reports で、[ファイル]メニューの[新規作成]をクリックします。
- [レポート ウィザ―ドを使用]をクリックします。
- [エキスパートの選択]リストで、[標準]をクリックし、[OK]をクリックします。
- レポート作成ウィザードの[データ]画面で、[接続の新規作成]ダブルクリックします。
- 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 パラメータ]画面では、XML ファイルに返される結果を制限するため、URL に追加できるパラメータを作成します。
- [プロパティの追加]をクリックして、新しい値を定義します。[プロパティ値の編集]ダイアログ ボックスが表示されます。このダイアログ ボックスで、パラメータ名と式を定義します。パラメータの定義に関する詳細は、XML ドライバでの HTTP パラメータの作成を参照してください。
- 既存のパラメータを変更するには、[値の編集]をクリックします。編集するパラメータを選択してから、このボタンをクリックします。
- 既存のパラメータを削除するには、[プロパティの削除]をクリックします。削除するパラメータを選択してから、このボタンをクリックします。
- [HTTP パラメータ]画面での作業が完了したら、[完了]をクリックします。
Web サービス データ ソースに接続する
- [Web サービス データ ソースを使用]した場合は、[次へ]をクリックして続行します。
- Web サービス ファイルの場所を指定するには、[ローカル WSDL を使用]または[HTTP(S)WSDL を使用]のいずれかを選択して、フィールドへの連結を完了します。
- [ローカル WSDL を使用]を選択した場合は、Web サービス ファイルのフル パスと名前を入力するか、またはフィールドへの連結ボタンを使用してそれを検索します。
- [HTTP(S)WSDL を使用]を選択した場合は、Web サービス ファイルの場所を示す URL を入力します。
- [次へ]をクリックします。
前のステップで選択した内容に応じて、Web サービス、ポート、およびメソッドを指定する画面、または Web サービスの URL に対する認証を定義する画面のどちらかが表示されます。[Web サービス、ポートおよびメソッド]画面が表示された場合は、ステップ 5 に進みます。
- 必要に応じて認証情報を入力してから、[次へ]をクリックします。
- [Web サービス、ポートおよびメソッド]画面で、サービス、ポート、およびメソッドをリストからそれぞれ 1 つずつ選択します。
- [完了]をクリックします。
XML データ ソースから作成されたテーブルが表示されたら、その他のデータ ソースと同じように Crystal レポートの作成に使用することができます。Crystal レポートの作成についての詳細は、『Crystal Reports ユーザーズ ガイド』を参照してください。
CRDB_JavaServer.ini パラメータ リファレンス
CRDB_JavaServer.ini
に表示されるパラメータは、インストールしたドライバによって異なります。たとえば、ネイティブ XML ドライバをインストールしなかった場合、[CRDB_XML]
パラメータは表示されません。CRDB_JavaServer.ini
ファイルに含まれているのが望ましいパラメータは、次のとおりです。
パラメータ名 | 説明 |
---|
Path | Path パラメータの値には、Java 実行ファイルのディレクトリが含まれます。Java Runtime Environment の複数のバージョンをインストールしている場合は、使用するバージョンの場所をこのパラメータで指定します。たとえば、次のように指定します。 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 パラメータには、JVM が Java サーバーの実行に割り当てることができる最大ヒープ領域を指定します。このパラメータはデフォルトで 64 MB に設定されます。大量のデータを処理する必要がある場合は、この数値をさらに高く設定してください。 |
JVMMinHeap | JVMMinHeap パラメータには、JVM が Java サーバーの実行に割り当てることができる最小ヒープ領域を指定します。 このパラメータはデフォルトで 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 データ接続を作成するときに Crystal Reports で表示されるデフォルトの JNDI 接続 URL です。この接続 URL の正しい書式はデータベース ドライバに固有で、データベース ドライバのベンダによって指定されます。 |
JDBCUserName | JDBCUserName は、新しい JDBC データ接続を作成する際に Crystal Reports に表示されるデフォルトのユーザー ID です。JDBC ドライバは、このユーザー ID を使ってデータベースに接続します。 |
JDBCDriverName | JDBCDriverName は、新しい JDBC データ接続を作成するとき Crystal Reports に表示される JDBC ドライバの完全なデフォルト クラス名です。 たとえば、Oracle JDBC ドライバの完全なクラス名は以下のとおりです。 oracle.jdbc.driver.OracleDriver
|
JNDIUserName | JNDIUserName は、新しい JNDI データ接続を作成する際に Crystal Reports に表示されるデフォルトのユーザー ID です。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 文書から読み込むバイト数を、それぞれの論理読み込みごとに決定します。このパラメータは、効率を良くするためと、一度に 1 バイトずつ読み込まれるのを回避するために使用します。これは、ブロック読み込みサイズと同じです。このパラメータには、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 で表示されます。 |