Skip to main content

This is documentation for Caché & Ensemble. See the InterSystems IRIS version of this content.Opens in a new tab

For information on migrating to InterSystems IRISOpens in a new tab, see Why Migrate to InterSystems IRIS?

Zen レポートのトラブルシューティング

ここでは、Zen レポートのトラブルシューティングの手順を示します。項目は以下のとおりです。

文字セットの変更

Zen レポート・クラス・パラメータの ENCODING では、レポート用に生成した XSLT の xsl:output 命令に encoding 属性を指定します。以下に例を示します。

<xsl:output method="xml" version="1.0" encoding="UTF-8" indent="no"/>

どの Zen レポートでも、既定の ENCODING は "UTF-8" です。UTF-8 文字セット以外の文字 (Latin-1 セットなど) を使用する場合、Zen レポート・クラスで ENCODING に代わりの値を指定する必要があります。以下はその例です。

Parameter ENCODING="ISO-8859-1";

URI クエリ・パラメータによる XHTML の表示

XHTML をブラウザで表示したいときに、Zen レポートの XSLT データのみが表示される場合があります。これは、Zen レポート・クラスの DEFAULTMODE を "xml" に設定しているなど、さまざまな理由で発生します。しかし、DEFAULTMODE を正しく "html" に設定したり、$MODE=html を指定しても、問題が発生して期待する XHTML 出力が表示されない場合もあります。ここでは、そのような場合の対処方法を説明します。

ブラウザを起動すると、Zen レポートによって XML が生成され、その XML がクライアントに送信され、その後、その XML が xml-stylesheet 処理命令に従ってクライアントの XHTML に変換されます。この処理命令の属性は、ブラウザに送信される URI 文字列のクエリ・パラメータとして表示されます。Internet Explorer では、疑問符 ? の後にパラメータが 1 つある URI 命令のみが理解されます。Zen レポート・クラス用に生成された xml-stylesheet 命令に複数のパラメータが含まれている場合に、ブラウザが Internet Explorer であると、問題が生じる可能性があります。

このため、xml-stylesheet 処理命令に必要な情報を URI クエリ文字列に表示する必要がないように、Zen レポート・クラスの多くのパラメータによってこれらの情報が指定されます。クラスのパラメータを適切に構成しておけば、Zen ではブラウザに関係なく、これらの命令が適切に処理されます。

ユーザがパラメータを 1 つのみ ($MODE など) 入力した場合であっても、Zen レポートの URI 文字列を入力すると、そのレポートの後続処理において、その他のパラメータが非表示のまま追加される場合があります。または、以下のような場合、追加パラメータをブラウザが理解するのが困難なことがあります。

  • Zen レポート・クラスの CSP クラス・パラメータ PRIVATE が 1 に設定され、これにより、ページがプライベートになる場合。プライベート・ページへは、同じ CSP セッションのページからのみ移動できます。この場合、CSPToken パラメータが URI のクエリ・パラメータ文字列に自動的に追加されるため、Internet Explorer の文字列では、追加のクエリ・パラメータをサポートできません。

  • Zen レポートに関連付けられた Caché ネームスペースおよびデータベースの構成で、[Excel サーバ] ページの [許可された認証方法] フィールドで [非認証] のアクセスが設定されています。

    [非認証] アクセスの場合、[パスワード] 認証では発生しない問題が起こります。[パスワード] アクセスでは、特定の Caché ネームスペースおよびデータベースに関連付けられている Zen レポートを実行する前に、ユーザがユーザ名とパスワードを入力する必要があります。このログイン・トランザクションによって、ブラウザによる cookie のサポートを Zen で検出できるので、その後、ユーザが Zen レポートの URI を入力したときに、クエリ文字列の複数のパラメータが正常に機能します。

    ログイン・トランザクションを使用しないと、ブラウザによる cookie のサポートを Zen で検出できないため、その後、ユーザが Zen レポートの URI を入力したときに、Internet Explorer でクエリ文字列の追加パラメータが正常に機能しません。

こうした状況に対処するオプションがいくつかあります。いずれの方法でもこの問題を解決できます。

  • [ウェブ・アプリケーション] ページ ([システム管理][セキュリティ][アプリケーション][ウェブ・アプリケーション]) を使用して、[セッションにクッキーを使用する] の値が [常時] となっている Zen レポート・クラスが含まれるように Caché のネームスペースおよびデータベースを構成します。

  • Zen レポート・クラスのクラス・パラメータ EMBEDXSL=1 を使用します。

  • Zen レポート・クラスのクラス・パラメータ STYLESHEETDEFAULTMODE="tohtml" を使用します。

  • [ウェブ・アプリケーション] ページ ([システム管理][セキュリティ][アプリケーション][ウェブ・アプリケーション]) を使用して、[許可された認証方法] の値を [パスワード] に設定して、Zen レポート・クラスが属する Caché のネームスペースとデータベースを構成し、Zen レポート・クラスのクラス・パラメータが XSLTMODE="server" となっていることを確認します。XSLTMODE="server" は、このパラメータを設定していない場合の既定値です。

PDF 生成の問題の解決

通常、Zen レポートでは、HTML および PDF 出力の生成に Java が必要です。既定インストールの FOP を使用していない場合、もしくは XSLTMODE="browser" で HTML レポートを生成している場合、Java はレポート生成に関与しないことがあります。Java をインストールしていない場合や、構成が不適切な場合は、Zen レポートによりエラーが生成されます。解決方法は次のとおりです。

  • 未インストールの場合、Java をインストールします。

  • JAVA_HOME 環境変数が設定されていることを確認します。この変数は、PDF 生成時に FOP で使用されます。

  • Java のインストール・ディレクトリが Caché Server Pages で使用するパス、もしくは Caché ユーザの使用するパスにあることを確認します。

Zen レポートを使用した PDF 出力の生成に問題がある場合、次の原因が考えられます。

  • Zen レポート・クラスに対して行った変更が、Zen レポートを表示しても PDF 出力に反映されない。これは、以前に表示されたページのキャッシュが原因で、特に Firefox で発生する場合があります。この問題を解決するには、完全に Firefox を終了して、新しい Firefox セッションを開始してから、変更した Zen レポートを表示する必要があります。Caché を再起動する必要はありません

  • XSL-FO を PDF としてレンダリングするツール (FOP または RenderX) をポイントするように Caché が正しく構成されていない。正しい手順は、“PDF 出力向け Zen レポートの設定” を参照してください。

  • レンダリング・ツール (FOP または RenderX) のインストールが壊れている。

  • レンダリング・エンジンが XSL-FO コマンドを理解していない。Zen では、XSL-FO 規格に従って XSL-FO が生成されますが、すべてのレンダリング・エンジンが XSL-FO 規格を完全に実装しているわけではありません。無償の FOP は不完全であることがわかっています。

  • XData ReportDisplay の構文エラー。サーバ側でエラーが把握されないときには、レンダリング・エンジン (FOP または RenderX) でこれらの構文エラーをエラーとしてレポートできます。

以下のセッションのトラブルシューティングの例では、Zen レポートを PDF 形式で表示するときに発生する問題に対処しています。以下の場合を例として考えます。

  • Macintosh 版の Caché で Zen を実行しています。

  • ブラウザは Windows 上で実行されています。

  • Caché のインストール・ディレクトリは、/Applications/Cach81 です。

  • Web サーバは既定のポート 80 に構成されています。

  • Macintosh 版 Caché のサーバ・マシン名は、mypro です。

以下の手順では、FOP は、XSL-FO を PDF としてレンダリングするツールという前提ですが、同様の手順が RenderX にも適用されます。

  1. 以下のような Caché ターミナル・コマンドを使用して、Caché から Macintosh マシン上の FOP 実行スクリプトをポイントします。

     zn "%SYS"
     Set ^%SYS("zenreport","transformerpath")="/Applications/fop-0.94/fop.bat" 
    
  2. Windows 上のブラウザからレポートを実行します。以下に例を示します。

    http://mypro.local:80/csp/app/ZENApp.MyRep.cls?$MODE=pdf

    PDF レポートが表示されます。

PDF レポートが表示されない場合は、以下のように、FOP インストールに問題がなかったかをテストできます。

  1. Caché サーバ上の /Applications/Cach81/mgr/temp ディレクトリが空であることを確認します。

  2. Windows 上のブラウザに以下の URI を入力します。

    http://mypro.local:80/csp/app/ZENApp.MyRep.cls?$MODE=pdf&$LOG=1&$NODELETE=1
    
  3. Caché がインストールされている Macintosh で以下のコマンドを入力することにより、この実行で出力した XML ファイルと XSLT ファイルの名前を変更します。

    cd /Applications/Cache81/mgr/temp
    mv *.xsl test.xsl
    mv *.xml test.xml
    

  4. /Applications/Cach81/mgr/temp ディレクトリから移動せず、以下のコマンドを入力することにより、test.xml ファイルと test.xsl ファイルを使用して FOP を実行します。

    /Applications/fop-0.94/fop -xml test.xml -xsl test.xsl -pdf test.pdf
    
  5. コンソール出力でエラーがないかどうか確認します。エラーが多く、コンソール画面で対応できない場合は、次のように、コンソール出力を test.log ファイルにリダイレクトできます。

    /Applications/fop-0.94/fop -xml test.xml -xsl test.xsl -pdf test.pdf > test.log
    
  6. 出力ファイル test.pdf を表示してみます。

中間ファイルの表示

Zen レポートのトラブルシューティングでは、いくつかの URI クエリ・パラメータが役立ちます。これらのパラメータを使用すると、変換処理の過程で生成された中間ファイルおよび最終ファイルを表示および保存できます。これらのファイルには、生成された XSLT ファイルまたは XSL-FO ファイル、XML 解析ツールのエラー・メッセージを含むテキスト・ファイル、処理終了後の結果を示す最終的な XHTML ファイルまたは PDF ファイルなどがあります。

Note:

レポート・オプションを URI クエリ・パラメータとして指定する方法、および一部のブラウザで発生する可能性のある副次的作用に対処する方法の詳細は、“Web ブラウザでの Zen レポートの起動” を参照してください。上記のセクションの "Zen レポートの URI クエリ・パラメータ" のテーブルには、使用可能な URI クエリ・パラメータがすべて一覧表示されています。ここでは、その一部を紹介します。

診断クエリ・パラメータは、次のとおりです

  • $LOG — $MODE=html または $MODE=pdf を使用して、診断に役立つメッセージを表示します。

  • $MODE — “中間ファイルを表示するための出力モードの変更” に記載されている値のいずれかを選択して、中間ファイルのいずれかを表示します。

  • $NODELETE — 中間ファイルを標準の Caché 一時ディレクトリに保存します。

  • $REPORTNAME — 選択した名前と場所で中間ファイルを保存します。

  • $USETEMPFILES — アプリケーションの CSP ディレクトリに、生成された XSLT ファイルを保存します。

ログ・ファイルへの Saxon からのメッセージの追加

診断クエリ・パラメータを使用して、Saxon 解析ツールで XHTML 出力の生成時に検出されたエラーを示すテキスト・ファイルを生成するには、Zen レポートを Saxon .jar ファイルの場所で構成する必要があります。Zen レポートでは、このコマンドを使用せずに、XHTML 生成プロセスからの有用な診断情報を生成できますが、ここで説明するいずれかのコマンドを指定しない限り、Saxon 解析ツールからの追加メッセージは生成されません。

これらのコマンドは、Caché ターミナル・コマンドのプロンプトから発行できます。Saxon 解析ツールのバージョン番号によって、必要なコマンドは異なります。以下に例を示します。

 set ^%SYS("zenreport","saxjar")="c:\saxon65\saxon.jar"

または以下のようにします。

 set ^%SYS("zenreport","saxjar")="c:\saxon\saxon8.jar"

または以下のようにします。

 set ^%SYS("zenreport","saxjar")="c:\saxon9\saxon9.jar"

XSL-FO パーサからのメッセージのログ

Web ブラウザでの Zen レポートの起動” で説明したように、$MODE=html または $MODE=pdf を指定する場合、クエリ・パラメータ $LOG=1 も設定できます。これにより、前者の指定では XML から XHTML への変換の出力、後者の指定では XML に XSLT を適用して XSL-FO を作成し、最終的には PDF に変換した出力を表示できます。以下はその例です。

http://localhost:57772/csp/myPath/myApp.myReport.cls?$MODE=pdf&$LOG=1

ここで、57772 は Caché サーバに割り当てられたポート番号です。以下の図に、$MODE=pdf&$LOG=1 の場合の例を示します。ここでは、ドキュメントに多くのページが含まれ、レンダリング・エンジンが RenderX であるため、$LOG=1 からの出力の容量は大きくなります。$LOG=1 からの出力がほとんどない、またはない場合もあります。メッセージの数は、使用する解析ツール (FOP または RenderX) および解析ツールのログ用の構成内容 (quiet (非インタラクティブ) または verbose (詳細)) に応じて変わります。

generated description: report pdf log

中間ファイルを表示するための出力モードの変更

$LOG の代わりとして、ブラウザで .cls の URI を指定するときに、$MODE クエリ・パラメータに特別な値を指定して、Zen レポートの診断情報を表示できます。これらの特殊な値には以下が含まれます。

  • toexcel – XML を Excel スプレッドシートに変換する XSLT スタイルシートを表示するには、以下のようにします (VMS のみ)。

    http://localhost:57772/csp/myPath/myApp.myReport.cls?$MODE=toexcel

  • tohtml – XML を XHTML に変換する XSLT スタイルシートを表示するには、以下のようにします。

    http://localhost:57772/csp/myPath/myApp.myReport.cls?$MODE=tohtml

  • toxslfo – XML を XSL-FO に変換する XSLT スタイルシートを表示するには、以下のようにします。

    http://localhost:57772/csp/myPath/myApp.myReport.cls?$MODE=toxslfo

  • xslfo – PDF レンダリングの前に XSL-FO スタイルシートを表示するには、以下のようにします。

    http://localhost:57772/csp/myPath/myApp.myReport.cls?$MODE=xslfo

ここで、57772 は Caché サーバに割り当てられたポート番号です。以下の図に、$MODE=xslfo の場合の例を示します。出力が XHTML または PDF のどちらでもないため、“この XML ファイルには、関連付けられたスタイル情報がないようです“ というメッセージが、ページ上部に表示されます。

generated description: report xslfo

後で表示するための中間ファイルの保存

$LOG および $MODE では、それぞれ一度に 1 つの形式の出力のみが表示され、後で表示できるようにファイルが保存されることはありません。レポート出力の処理過程では、さまざまなタイプの複数の中間ファイルが生成されます。$NODELETE というクエリ・パラメータを追加して、すべての中間ファイルと最終出力ファイルを後で表示できるように保存できます。これらの出力ファイルには、適宜、2037q4XM9.xsl などの名前が割り当てられます。タイム・スタンプとファイル名の拡張子から、必要な特定のファイルを識別できます。

$NODELETE ファイルは以下の場所に保存されます。ここで C:\MyCache はインストール・ディレクトリの名前です。

C:\MyCache\Mgr\Temp

[開始] ページ ([システム管理][構成][追加設定][開始]) を使用して、この場所をリセットできます。[TempDirectory] の行の [編集] をクリックします。Temp 以外のサブディレクトリ名を入力します。Caché では、Caché インストール・ディレクトリの Mgr サブディレクトリの下に、この名前のサブディレクトリが作成されます。前の例では、Temp となっています。

Important:

Caché 一時ディレクトリを変更すると、Zen レポートを使用しているアプリケーションだけでなく、Caché アプリケーションすべてに影響します。

$MODE=html または $MODE=pdf であれば、通常処理の間に $NODELETE を使用できます。あるいは、$LOG または $MODE の特殊な値と組み合わせて、後で出力結果を参照できるように保存することもできます。

例えば、Firefox で以下の URL を入力して、ログを有効にし、Zen レポートのファイルが削除されないように指定すると仮定します。

http://localhost:57772/csp/myns/jsl.MyReport.cls?$MODE=html&$LOG=1&$NODELETE=1

一連のファイルの名前は以下のようになります。

  • 2172nQ1_2.xsl

  • 2172PhA_4.htm

  • 2172UqbS3.txt

  • 2172UZ9x1.xml

Internet Explorer では、ブラウザから Zen レポートを起動するときに使用できる URI クエリ・パラメータの数が制限されています。$NODELETE の設定で使用できる URI クエリ・パラメータが不足する場合は、以下のようにターミナル・プロンプトから同等のオプションを設定することもできます。

  1. Caché ネームスペースを、レポートを実行するネームスペースに設定します。以下はその例です。

     zn "myNameSpace"
    
  2. 以下のように、中間ファイルに対して “NoDelete“ (削除しない) オプションを有効にします。

     Set ^CacheTemp.ZEN("DebugZen","NoDelete")=1
    

中間ファイルと最終ファイルのファイル名の設定

$REPORTNAME クエリ・パラメータを使用すると、変換処理の過程で生成されたすべてのファイルを、選択した名前と場所で保存できます。

REPORTDIR クラス・パラメータを使用すると、Caché サーバのローカル・ファイル・システムにこれらのファイルの場所が指定されます。REPORTDIR に値を指定しないと、$REPORTNAME ファイルは Caché 一時ディレクトリに格納されます。既定の場所は、次のとおりです。

C:\MyCache\Mgr\Temp

後で表示するための中間ファイルの保存” のセクションで説明したとおり、この既定の場所は変更できます。出力ファイルが適切に整理されるように、$REPORTNAME を使用する予定がある場合には REPORTDIR の値を設定することをお勧めします。

Important:

$ (ドル記号) 以外の名前を共有している多くのパラメータとは異なり、REPORTNAME クラス・パラメータと $REPORTNAME クエリ・パラメータとの間にはリレーションシップは何もありません。

以下では、$REPORTNAME セッションの例を示します。

  1. Zen レポート・クラスで以下の行を指定します。

    Parameter REPORTDIR = "c:\zenout"

  2. ブラウザのアドレス・フィールドに以下のような行を入力します。

    http://localhost:57772/csp/rpt/Re.Rpt1.cls?$MODE=html&$REPORTNAME=teste

    以下はその説明です。

    • 57772 は Caché サーバに割り当てられたポート番号です。

    • Re.Rpt1.cls は、使用している Zen レポートのクラス名です。

    • rpt は、アプリケーションが置かれているネームスペースです。

    • teste は、出力に使用するファイル名です。

  3. 以下のように、手順 1 で指定したディレクトリを変更し、生成されたファイルを一覧表示します。

    C:\> cd zenout
    C:\zenout> dir
     Volume in drive C has no label.
     Volume Serial Number is 6035-CA91
    
     Directory of C:\zenout
    
    06/19/2008 02:55 PM  <DIR>  .
    06/19/2008 02:55 PM  <DIR>  ..
    06/19/2008 02:55 PM   6,320 teste.htm
    06/19/2008 02:55 PM     559 teste.txt
    06/19/2008 02:55 PM     753 teste.xml
    06/19/2008 02:55 PM   4,892 teste.xsl
    
     4 File(s)         12,524 bytes
     2 Dir(s)  17,536,151,552 bytes free
    

このセクションの冒頭で説明したように、Saxon .jar の場所を設定することなく、このようなセッションを実行できます。中間ファイルは依然として表示されますが、ブラウザにはエラー・メッセージが表示されず、.txt ファイルも生成されません。このため、解析ツールから構文エラーに関する情報は表示されません。

このセッションの例は $MODE=pdf にも当てはめることができます。FOP および RenderX レンダリング・エンジンでは常に構文解析が実行されるため、PDF の場合、ブラウザでは常にエラー・メッセージがレポートされ、構文エラーを示す .txt ファイルが常に表示されます。市販されている製品としては、RenderX の方が FOP よりも構文解析が優れているので、PDF 生成エラーを分析するときには RenderX を実行できると便利です。例えば $MODE=xml を設定することで、XML を生成している場合、保存するのは .xml ファイルのみです。

中間 XSLT 変換ファイルの保存

Important:

このセクションで説明する $USETEMPFILES オプションおよび USETEMPFILES オプションの目的は、 xml-stylesheet 処理命令に対して Internet Explorer に存在する制限に対処することです。この制限は、特に Zen レポート・クラスの CSP クラス・パラメータ PRIVATE を 1 (True) に設定している場合やセッション・クッキーを無効にしている場合に発生する表示上の問題の原因となります。この問題は、Internet Explorer でレポートを処理する場合にのみ発生します。そのため、$USETEMPFILES は、XSLTMODE="browser" または $XSLT=browser を設定した場合にのみ有効です。XLSTMODE="serve" または $XSLT=server を設定した場合、$USETEMPFILES は機能しません。

Zen レポート・クラスで XSLT スタイルシートが生成されます。生成された XSLT スタイルシートは、出力 XHTML を生成するために使用されます。$USETEMPFILES という URI パラメータを使用すると、この中間 XSLT スタイルシートをファイルとして保存できます。$USETEMPFILES の既定の値は 0 (False) です。この場合、XSLT が生成されて使用されますが、これがファイルに保存されることはありません。$USETEMPFILES クエリ・パラメータを 1 (True) に設定すると、中間 XSLT スタイルシートをファイルに保存できるので、そのファイルを確認して問題の診断が可能です。

より高い柔軟性を備えている $NODELETE および $REPORTNAME を使用できる場合でも、$USETEMPFILES を使用して、生成された XSLT スタイルシートを保存することにはいくつかの理由があります。以下に、$USETEMPFILES を使用する理由を示します。

  • ブラウザでレポートを処理するようにして (既定ではサーバで処理)、そのブラウザに Internet Explorer を使用すると、Zen レポート・クラスの CSP クラス・パラメータ PRIVATE を 1 (True) に設定している場合またはセッション・クッキーを無効にしている場合は、表示上の問題が発生する可能性がありますが、$USETEMPFILES を使用することでこの問題に対処できます。

  • Zen では、$USETEMPFILES の .xsl ファイルは、Caché ネームスペースごとに別の場所に保存される。$NODELETE では、すべての中間ファイルが同一の Caché 一時ディレクトリに保存されます。

  • Internet Explorer のブラウザから Zen レポートを起動するときに使用できる URI クエリ・パラメータの数が制限されている。Internet Explorer のユーザは、ブラウザのアドレス・フィールドに URI クエリ・パラメータとして $NODELETE または $REPORTNAME を指定できない場合があります。$NODELETE および $REPORTNAME とは異なり、$USETEMPFILES には、USETEMPFILES という Zen レポート・クラスのパラメータと同等のパラメータがあります。Zen レポート・クラスでこのパラメータに 1 を設定すると、URI クエリ・パラメータを使用することなく、$USETEMPFILES 機能を有効にできます。

    Important:

    ブラウザに指定した $USETEMPFILES クエリ・パラメータは、Zen レポート・クラスのクラス・パラメータ USETEMPFILES に設定した値をオーバーライドします。

  • スタイルの問題を診断する際、.xsl ファイルが唯一の参考ファイルであることがある。$USETEMPFILES で保存できるのは .xsl ファイルのみです。

USETEMPFILES=1 の場合、レポートの実行後、以下のグローバル・ノードで文字列として記録される特定の場所に .xsl スタイルシート・ファイルが格納されます。

^%SYS("zenreport","tmpdir")

現在の一時ファイルの名前と場所を確認するには、^%SYS("zenreport","tmpdir") を指定した ZWRITE コマンドをターミナル・プロンプトで発行します。結果として得られるファイルのリストは、以下のようになります。ここで、C:\MyCache は、インストール・ディレクトリの名前、ZENApp.MyReportOpens in a new tab は、SAMPLES ネームスペースにある Zen レポート・クラスと ENSEMBLE ネームスペースにあるレポートの完全なパッケージおよびクラス名、Cinema.MyReport は、SAMPLES ネームスペースにある別のレポートの完全なパッケージおよびクラス名です。結果として得られるファイルのリストは、以下のようになります (読みやすいように行末が追加されています)。

 SAMPLES>zw ^%SYS("zenreport")
 ^%SYS("zenreport","tmpdir","ENSEMBLE","ZENApp.MyReport",
 "C:\MyCache\CSP\ensemble\jnSi7x6mbFXHDg.xsl")=""
 ^%SYS("zenreport","tmpdir","SAMPLES","Cinema.MyReport",
 "C:\MyCache\CSP\samples\PhaRNCLC1ZZJzg.xsl")=""
 ^%SYS("zenreport","tmpdir","SAMPLES","ZENApp.MyReport",
 "C:\MyCache\CSP\samples\T4XLVtQaHJUuNA.xsl")=""

XSLTMODE="browser" および USETEMPFILES=1 を指定してレポートを実行していない場合、^%SYS("zenreport","tmpdir") は空になります。

$USETEMPFILES オプションの結果として保存されている生成された .xsl ファイルは、定期的に削除することができます。これは、ターミナル・プロンプトで以下のコマンドを発行することによって、または ObjectScript ルーチン内から実行できます。この例では、ZENApp.MyReportOpens in a new tab は、Zen レポート・クラスの完全なパッケージおよびクラス名です。

 SAMPLES>do ##class(ZENApp.MyReport).%DeleteTempFiles()

このコマンドを発行すると、ファイルのリストは以下のようになります。

 SAMPLES>zw ^%SYS("zenreport")
^%SYS("zenreport","tmpdir","ENSEMBLE","ZENApp.MyReport",
"C:\MyCache\CSP\ensemble\jnSi7x6mbFXHDg.xsl")=""
^%SYS("zenreport","tmpdir","SAMPLES","Cinema.MyReport",
"C:\MyCache\CSP\samples\PhaRNCLC1ZZJzg.xsl")=""

このコマンドにより、コマンドが実行されるネームスペースにおいて、コマンドで指定された Zen レポート・クラスに関連するこれらの一時ファイルのみ削除されます。$USETEMPFILES の既定値は 0 (False) です。

ブラウザで表示する XHTML のデバッグ

ブラウザで表示する Zen レポートの出力をデバッグすることが難しい場合があります。このような問題の原因には、ブラウザで XML と XSLT を使用する場合に、[ページ・ソースの表示] を選択すると、期待した XHTML ではなく元の XML ファイルが表示されるなどがあります。これにより、XSLT 変換をデバッグすることがある程度難しくなります。

多くの場合、Zen レポートの問題を把握したり、XSLT をデバッグするために必要なのは、<oXygen/> や XMLSpy などの本格的な XSLT デバッガではなく、ブラウザのレンダリング方法に対応した XHTML の表現です。ここでは、Firefox および Internet Explorer でこれを実現する方法について説明します。

Internet Explorer および Firefox では、異なる XSLT レンダリング・エンジンが使用されており、Zen レポートが同じように表示されない場合があります。例えば、以下の Zen レポートのフラグメントを考えてみます。

<item field="@author" />
<item value=" " />
<item field="@author" />

Internet Explorer では以下の XHTML が表示されます。

<span>BOB</span>
<span> </span>
<span>BOB</span>

Firefox では以下の XHTML が表示されます。

<span>BOB</span><span/><span>BOB</span>

IE 用の XSLT デバッグ・ツールは入手することが可能です。これらは、“IE で XSL 出力をデバッグする“ というキーワードで Web を検索すると見つけることができます。InterSystems では、特定のツールを推奨することはしていませんが、多数のツールが提供されています。

Firefox の場合は以下のとおりです。

  1. ログを有効にしたり、ファイルが削除されないようにするには、“XSL-FO パーサからのメッセージのログ” や “後で表示するための中間ファイルの保存” など、前のセクションの手順に従ってください。次に例を示します。

    http://localhost:57772/csp/myns/jsl.MyReport.cls?$MODE=html&$LOG=1&$NODELETE=1
    

    デバッグに使用できるファイルは、2172nQ1_2.xsl2172UZ9x1.xml のような名前が付けられ、一般的な Caché 一時ディレクトリに出力されます。

    この方法で中間ファイルを保存する場合、生成された .htm ファイルは Saxon 解析ツールによって生成されたものです。そのため、Firefox ブラウザで Firefox の組み込み XSLT レンダリング・ツールによって生成された XHTML と同じようには表示されません。

  2. Firefox のレンダリング方法に対応する XHTML を生成するには、以下の JavaScript を Firefox で実行します。.xsl および .xml 中間ファイルの名前を必ず置換してください。このスクリプトによって新しいウィンドウが開くので、ウィンドウを使用できるようにポップアップ・ブロック機能を無効にする必要があります。

    var oXmlDom = document.implementation.createDocument(null,null,null);
    var oXslDom = document.implementation.createDocument(null,null,null);
    oXmlDom.async = false;
    oXmlDom.load("2172UZ9x1.xml");
    oXslDom.async = false;
    oXslDom.load("2172nQ1_2.xsl");
    var oProcessor = new XSLTProcessor();
    oProcessor.importStylesheet(oXslDom);
    var oResultDom = oProcessor.transformToDocument(oXmlDom);
    var xml_out = (new XMLSerializer()).serializeToString(oResultDom);
    var newWindow = window.open("","","");
    newWindow.document.write(xml_out);
    newWindow.document.close();
    
    
  3. 新しく開いたウィンドウで、[ページ・ソースの表示] を選択します。これにより、Firefox のレンダリング方法に対応した XHTML を表示することができます。

<call> 要素のトラブルシューティング

Zen レポート生成が適切に機能するには、生成された XSLT が生成された XML で要素を検索できる必要があります。<call> 要素を使用する Zen レポートでは、XML と XSLT との間でのマッチングに関連してさらに複雑にできます。ReportDisplay ブロックからのサブレポートの呼び出しで使用される属性に関する以下の情報が、問題の解決に役立つ場合があります。

subreport 属性は、xsl:apply-templatesxsl:template のインスタンスの mode 属性を指定します。

subreportname 属性は、xsl:template のインスタンスの match 属性の値および、xsl:apply-templates 要素の select 属性の値を指定します。

生成された XSLT の表示に $REPORTNAME を使用する方法の詳細は、“中間ファイルの表示” のセクションも参照してください。

FeedbackOpens in a new tab