*レポートから特定の情報を引き出すのは難しい場合があります。 私たちの多くにとって、私たちは自分たちをナビゲートすることを学びましたJMP必要な値にアクセスするために添え字メソッドを使用してレポートします。 ツリー構造ウィンドウは、レポートを構成するすべての表示ボックスを表示するための私たちの友人でした(そして今でもそうです)。
表示ボックス名の横にある括弧内の番号を使用して、正しい番号であることを確認した可能性があります。 次に、異なる設定または異なるバージョンのJMPを使用していた同僚がスクリプトを実行しましたが、同じ結果は得られませんでした。
Report( ow )[Number Col Box( 8 )][1];
不可解でしたが、すぐに相対参照を使用したより堅牢なアプローチを学びました。 つまり、必要な情報が含まれているOutlineBoxのタイトルを使用して添え字を付けて、レポートをナビゲートしました。
Report( ow )[Outline Box( "Summary of Fit" )][Number Col Box( 1 )][1];
待ってください、JMPレポートをトラバースする別の方法があります-そして私はあなたがそれを好きになると思います!
以下はからの抜粋ですJMPスクリプティング、第2版にジャンプこれは、XPathクエリ言語をJMPレポートのXML表現に適用する方法について説明しています。
XPath
Wait, there’s another way to traverse JMP reports!待ってください、JMPレポートをトラバースする別の方法があります!私たちの多くはXMLドキュメントに精通しています。 そうでない人のために、XMLはExtensibleMarkupLanguageの略です。 これは、マシンで読み取りおよび理解できるドキュメントの一連のルールを確立するマークアップ言語です。 XPathは、XMLドキュメントをナビゲートできるクエリ言語です。
XMLはHTMLにかなり似ていますが、目的は異なります。 HTMLの目的はコンテンツを表示することですが、XMLの目的はデータの保存とコンテンツの伝達に関するものです。
XMLドキュメントの主要なコンポーネントのいくつかについて説明しましょう。
- タグ–タグは、XMLをHTMLに少し似せるものです。 タグは通常、記号よりも小さい開始(<)で始まり、記号よりも大きい終了(>)で終わります。 タグ名は<記号と>記号の間に指定されており、事前定義された値ではありません。 代わりに、ドキュメントの作成者はタグ名を確立する必要があります。 HTMLの場合と同様に、終了タグを表すには、タグをスラッシュで閉じる必要があります(たとえば、 content )。
- 要素–必要に応じて、要素はタグステートメント全体で構成されます。 要素は、開始タグの<で始まり、終了タグの>まで続きます。 要素には、他の要素を含めることもできます。
- 属性–属性は、要素に関するメタデータまたは追加の詳細です。 属性は開始タグで指定され、二重引用符で指定された1つの値のみを持つことができます。 タグには複数の属性を含めることができますが、各タイプは1つだけです。
- コンテンツ–コンテンツはデータです。 要素を構成するのは、開始タグと終了タグの間のテキスト、数字、およびその他の文字です。
次の例のXMLファイルについて考えてみます。 The openTables elementは、他のすべての要素が表示されるルート要素です。 テーブル要素には、という属性があります現在、値は0または1です。 各テーブル要素の中には、次の3つの追加要素があります。名前、 numCols 、 とnumRows 。 データはタグの間に表示されます。
<openTables>
<table current="1">
<name>Big Class</name>
<numCols>5</numCols>
<numRows>40</numRows>
</table>
<table current="0">
<name>Fitness</name>
<numCols>9</numCols>
<numRows>31<numRows>
</table>
</openTables>
XMLドキュメントの構造を理解したので、その知識をXMLドキュメントとしてのJMPレポートの構造に適用できます。 JMPレポートのXML表現を確認するには、 XMLを取得するレポートレイヤーへのメッセージ。 XMLはログに表示されます(表示>ログ)。

例を見てみましょう。 配布レポートに表示されるアウトラインボックスの数をプログラムで決定したいとします。
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :height ),
Horizontal Layout( 1 ),
Vertical( 0 )
)
);
JSLを使用して表示ボックスをステップ実行し、そのタイプを確認することもできますが、それはかなり面倒な作業になります。 代わりに、XML表現を見てみましょう。
Write( Report( dist ) << Get XML );
ログに表示される結果は、ほぼ180行の長さの文字列です。 圧倒されないでください! ログの一番上までスクロールして、最初のタグだけを確認します。
タグの名前はアウトラインボックスそしてそれは4つの属性を持っています:幅、身長、 helpKey 、 とisOpen 。 次に来るのは、アウトラインボックスやその他の要素のタイトルである要素のコンテンツです。 他の要素を見ると、要素名はツリー構造の表示ボックス名と同じですが、XML形式であることに注意してください。
図7.5ツリー構造と比較したXML要素
<アウトラインボックス属性>題名 <リストボックス属性> <ドロップボックス属性> < SpacerBox属性> ドロップボックス>> <アウトラインボックス属性>題名 等… |
 |
検索する要素のタグ名がわかったので、XPathを使用してアウトラインボックスがいくつあるかを調べる方法を見てみましょう。

JMPでは、 XPath()メッセージは、プラットフォームオブジェクトまたはレポートオブジェクトのいずれかに送信されます。 その引数は、レポートのXML表現から情報を取得するために使用されるXPath式です。 使用する必要はありませんXMLを取得する使用する前にXPath()メッセージ。 ただし、構造と使用可能な属性を確認すると役立つ場合があります。
以下は、レポートでアウトラインボックスを検索し、各アウトラインボックスへの参照のリストを返します。
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/ *: obList = {DisplayBox [OutlineBox]、DisplayBox [OutlineBox]、DisplayBox [OutlineBox]、 DisplayBox [OutlineBox]}; |
単純に使用できますNItems()上の機能obListアウトラインボックスの参照数を取得するには、リストに保存されています。 または、XPath言語について詳しく学ぶときに、 XPath Count()各アウトラインボックスへの参照の代わりにカウントを返す関数。
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
それでは、もっと興味深い例を見てみましょう。 OnewayレポートのMeansandStdDeviationsテーブルにMean列とStdDev列のみを表示したいとします。
図7.6平均と標準偏差のある一方向
 |
dt = Open( <BR /> "$SAMPLE_DATA\Big Class.jmp" <BR />);
ow = dt << Oneway(
Y( :height ),
X( :age ),
Means and Std Dev( 1 ),
Mean Error Bars( 1 ),
Std Dev Lines( 1 ),
Mean of Means( 1 )
);
|
Means and StdDeviationsテーブルの下にあるNumberColBox参照のみのリストを使用して返すことができます。
添字とXPathの組み合わせ:
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
JSLの使用為に()ループ、列の見出しを確認し、可視性プロパティを次のように変更できます
見出しがMeanまたはStdDev以外の場合は、折りたたまれています。
/* Loop through each item to show only the Mean, Std Dev columns */
For( i = 1, i <= N Items( ncbList ), i++,
rptColName = ncbList[i] << Get Heading;
If( !Contains( {"Mean", "Std Dev"}, rptColName ),
ncbList[i] << Visibility( "Collapse" )
);
);
しかし、繰り返しになりますが、XPathには、を必要とせずに同じ結果を達成する方法があります。為に()ループ。 見て
レポートからの数値列ボックスのXML表現の抜粋:
番号
内に要素があることに注意してくださいNumberColBoxと呼ばれる要素NumberColBoxHeader 。 これ
要素には、レポートの列見出しが含まれます。 XPathを使用すると、そのテキストをキャプチャして実行できます
比較。 平均以外の見出しを持つ数値列ボックスへの参照のみ
または標準偏差がリストに返されます。
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
このXPathクエリはNumberColBoxHeader内に表示される要素NumberColBoxエレメント。 Text関数は、からテキストを抽出します。 NumberColBoxHeaderエレメント。 この例では、テキストが基準を満たしている場合、つまりテキストが平均ではなく、標準偏差でもない場合、参照はリストで返されます。
送信Visibility()そのリストへのメッセージは、リスト内のすべてのアイテムに設定を適用します。
colsToHide << Visibility( "Collapse" );
図7.7列が非表示にされた後の一方向

Rosemary Lucasと私は、これらの例がJMPレポートのナビゲートに役立つことを願っています。 プログラムによるレポートのナビゲートの詳細については、チェックアウトしてください。 JMPスクリプティング、第2版にジャンプ。

*注:クリップアートソース:空白の道路標識のクリップアート