*Das Abrufen spezifischer Informationen aus Ihren Berichten kann eine Herausforderung darstellen. Für viele von uns haben wir gelernt, uns zurechtzufinden JMP Berichte mit einer Subskriptionsmethode, um auf die gewünschten Werte zuzugreifen. Das Baumstrukturfenster war unser Freund (und ist es immer noch), um uns alle Anzeigefelder zu zeigen, aus denen der Bericht besteht.
Möglicherweise haben Sie zu Beginn die Nummern in Klammern neben den Anzeigefeldnamen verwendet, um sicherzustellen, dass Sie die richtige Nummer gewählt haben. Und dann führte Ihr Kollege mit anderen Einstellungen oder einer anderen Version von JMP Ihr Skript aus, erzielte aber nicht die gleichen Ergebnisse wie Sie.
Report( ow )[Number Col Box( 8 )][1];
Es war verwirrend, aber bald lernten Sie einen robusteren Ansatz mit relativer Referenzierung kennen. Das heißt, Sie haben durch den Bericht navigiert, indem Sie den Titel der OutlineBox mit den gewünschten Informationen abonniert haben.
Report( ow )[Outline Box( "Summary of Fit" )][Number Col Box( 1 )][1];
Warten Sie, es gibt noch eine andere Möglichkeit, JMP-Berichte zu durchlaufen – und ich denke, sie wird Ihnen gefallen!
Nachfolgend ein Auszug aus Wechseln Sie zu JMP Scripting, Second Edition der erläutert, wie Sie die XPath-Abfragesprache auf die XML-Darstellung Ihrer JMP-Berichte anwenden können.
XPath
Wait, there’s another way to traverse JMP reports!Warten Sie, es gibt eine andere Möglichkeit, JMP-Berichte zu durchlaufen! Viele von uns sind mit XML-Dokumenten vertraut. Für diejenigen, die es nicht sind, steht XML für Extensible Markup Language. Es ist eine Auszeichnungssprache, die eine Reihe von Regeln für Dokumente aufstellt, die von Maschinen lesbar und verständlich sind. XPath ist eine Abfragesprache, mit der Sie in Ihren XML-Dokumenten navigieren können.
Obwohl XML ziemlich ähnlich wie HTML aussieht, sind ihre Zwecke unterschiedlich. Der Zweck von HTML ist die Anzeige von Inhalten, während der Zweck von XML eher der Datenspeicherung und der Übermittlung von Inhalten dient.
Lassen Sie uns einige der Hauptkomponenten eines XML-Dokuments besprechen:
- Stichworte – Tags lassen XML ein bisschen wie HTML aussehen. Tags beginnen im Allgemeinen mit einem öffnenden Kleiner-als-Zeichen (<) und enden mit einem schließenden Größer-als-Zeichen (>). Der Tag-Name wird zwischen den Zeichen < und > angegeben und ist kein vordefinierter Wert. Stattdessen muss der Autor des Dokuments die Tag-Namen festlegen. Wie in HTML müssen Tags mit einem Schrägstrich abgeschlossen werden, um ein End-Tag darzustellen (z. B. Inhalt ).
- Elemente – Ein Element besteht sozusagen aus einer ganzen Tag-Anweisung. Ein Element beginnt mit dem < des öffnenden Tags bis einschließlich des > des schließenden Tags. Elemente können auch andere Elemente enthalten.
- Attribute – Attribute sind Metadaten oder zusätzliche Details zu einem Element. Ein Attribut wird im öffnenden Tag angegeben und kann nur einen Wert haben, der in doppelten Anführungszeichen angegeben wird. Ein Tag kann mehrere Attribute haben, aber nur eines von jedem Typ.
- Inhalt – Inhalt sind die Daten. Es sind der Text, die Zahlen und andere Zeichen zwischen den öffnenden und schließenden Tags, die ein Element bilden.
Betrachten Sie die folgende XML-Beispieldatei. Das offene Tische element ist das Wurzelelement, in dem alle anderen Elemente erscheinen. Das Tabellenelement hat ein Attribut namens aktuell , die einen Wert von 0 oder 1 hat. In jedem Tabellenelement befinden sich drei zusätzliche Elemente: Name , numCols , und numZeilen . Die Daten erscheinen zwischen den Tags.
<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>
Nachdem wir nun die Struktur eines XML-Dokuments verstanden haben, können wir dieses Wissen auf die Struktur eines JMP-Berichts als XML-Dokument anwenden. Um die XML-Darstellung eines JMP-Berichts anzuzeigen, senden Sie die Holen Sie sich XML Nachricht an die Berichtsschicht. Das XML wird im Protokoll angezeigt ( Ansicht > Protokoll ).

Schauen wir uns ein Beispiel an. Angenommen, Sie möchten programmgesteuert bestimmen, wie viele Gliederungsfelder in einem Verteilungsbericht angezeigt werden.
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :height ),
Horizontal Layout( 1 ),
Vertical( 0 )
)
);
Sie könnten JSL verwenden, um durch die Anzeigefelder zu gehen und ihren Typ zu überprüfen, aber das wäre eine ziemlich mühsame Aufgabe. Schauen wir uns stattdessen die XML-Darstellung an.
Write( Report( dist ) << Get XML );
Das im Protokoll angezeigte Ergebnis ist eine Zeichenfolge, die fast 180 Zeilen lang ist. Lassen Sie sich nicht überwältigen! Scrollen Sie zum Anfang des Protokolls und sehen Sie sich nur das erste Tag an:
Das Tag wird benannt OutlineBox und es hat vier Attribute: Breite , Höhe , helpKey , und ist offen . Alles, was als nächstes kommt, ist der Inhalt des Elements, das der Titel der Gliederungsbox und anderer Elemente ist. Wenn Sie sich die anderen Elemente ansehen, beachten Sie, dass die Elementnamen mit den Anzeigefeldnamen in der Baumstruktur identisch sind, jedoch im XML-Format.
Abbildung 7.5: XML-Elemente im Vergleich zur Baumstruktur
< OutlineBox Attribute> Titel < Listenfeld Attribute> < DropBox Attribute> < Abstandsbox Attribute> DropBox > < OutlineBox Attribute> Titel etc… |
 |
Nachdem wir nun den Tag-Namen des Elements kennen, nach dem wir suchen, wollen wir untersuchen, wie wir XPath verwenden können, um herauszufinden, wie viele Gliederungsfelder vorhanden sind.

Bei JMP ist die XPath() Die Nachricht wird entweder an das Plattformobjekt oder das Berichtsobjekt gesendet. Sein Argument ist ein XPath-Ausdruck, der verwendet wird, um Informationen aus der XML-Darstellung des Berichts abzurufen. Sie müssen nicht verwenden Holen Sie sich XML bevor Sie die verwenden können XPath() Botschaft. Es kann jedoch hilfreich sein, die Struktur und die verfügbaren Attribute zu überprüfen.
Im Folgenden wird der Bericht nach Gliederungsfeldern durchsucht und eine Liste mit Verweisen auf jedes Gliederungsfeld zurückgegeben.
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/*: obList = {DisplayBox[Gliederungsbox], DisplayBox[Gliederungsbox], DisplayBox[Gliederungsbox], DisplayBox[Gliederungsbox]}; |
Wir könnten einfach die verwenden NIArtikel() Funktion an obListe um die Anzahl der Outline-Box-Referenzen zu erhalten, werden in der Liste gespeichert. Oder wenn Sie mehr über die Sprache XPath lernen, können Sie die verwenden XPath-Anzahl() Funktion, um die Anzahl anstelle eines Verweises auf jede Gliederungsbox zurückzugeben.
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
Schauen wir uns nun ein interessanteres Beispiel an. Angenommen, wir wollten nur die Spalten Mean und Std Dev in einer Tabelle Means and Std Deviations eines Oneway-Berichts anzeigen.
Abbildung 7.6 Einweg mit Mittelwerten und Std-Abweichungen
 |
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 )
);
|
Wir können eine Liste nur der Number Col Box-Referenzen unter der Tabelle Means and Std Deviations mit zurückgeben
eine Kombination aus Subskription und XPath:
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
Verwenden einer JSL Zum() -Schleife können wir die Überschrift der Spalte überprüfen und die Sichtbarkeitseigenschaft auf ändern
eingeklappt, wenn die Überschrift etwas anderes als Mean oder Std Dev ist.
/* 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" )
);
);
Aber auch hier gibt es in XPath eine Möglichkeit, dasselbe Ergebnis zu erzielen, ohne dass die Zum() Schleife. Aussehen
an einem Auszug der XML-Darstellung einer Number Col Box aus dem Bericht:
Zahl
Beachten Sie, dass es ein Element innerhalb von gibt NumberColBox Element genannt NumberColBoxHeader . Dies
-Element enthält die Spaltenüberschrift des Berichts. XPath ermöglicht es uns, diesen Text zu erfassen und auszuführen
Vergleiche. Nur Verweise auf Number Col Boxes, die eine Überschrift haben, die etwas anderes als Mean ist
oder Std Dev werden in einer Liste zurückgegeben.
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
Diese XPath-Abfrage betrachtet NumberColBoxHeader Elemente, die innerhalb von a erscheinen NumberColBox Element. Die Text-Funktion extrahiert den Text aus der NumberColBoxHeader Element. Wenn in diesem Beispiel der Text die Kriterien erfüllt, was bedeutet, dass der Text nicht gemein und nicht Std Dev ist, wird die Referenz in einer Liste zurückgegeben.
Senden der Sichtweite() Nachricht an diese Liste wendet die Einstellung auf jedes Element in der Liste an.
colsToHide << Visibility( "Collapse" );
Abbildung 7.7 Einbahnstraße, nachdem Spalten ausgeblendet wurden

Rosemary Lucas und ich hoffen, dass Sie diese Beispiele beim Navigieren in Ihren JMP-Berichten hilfreich fanden. Weitere Informationen zum programmgesteuerten Navigieren in Ihren Berichten finden Sie unter Wechseln Sie zu JMP Scripting, Second Edition .

*Hinweis: ClipArt-Quelle: Leere Verkehrszeichen Clipart