*Estrarre informazioni specifiche dai tuoi rapporti può essere difficile. Per molti di noi, abbiamo imparato a navigare nel nostro JMP report utilizzando un metodo di indicizzazione per accedere ai valori desiderati. La finestra Struttura ad albero è stata nostra amica (ed è tuttora) per mostrarci tutte le finestre di visualizzazione che compongono il report.
Potresti aver iniziato a utilizzare i numeri mostrati tra parentesi accanto ai nomi delle caselle di visualizzazione per assicurarti di avere quello giusto. E poi il tuo collega, che aveva preferenze diverse o una versione diversa di JMP, ha eseguito il tuo script ma non ha ottenuto i tuoi stessi risultati.
Report( ow )[Number Col Box( 8 )][1];
Era sconcertante, ma presto hai imparato un approccio più solido usando il riferimento relativo. Cioè, hai navigato nel report sottoscrivendo il titolo dell'OutlineBox che conteneva le informazioni desiderate.
Report( ow )[Outline Box( "Summary of Fit" )][Number Col Box( 1 )][1];
Aspetta, c'è un altro modo per esaminare i rapporti JMP e penso che ti piacerà!
Quello che segue è un estratto da Passa a JMP Scripting, seconda edizione che illustra come applicare il linguaggio di query XPath alla rappresentazione XML dei report JMP.
XPath
Wait, there’s another way to traverse JMP reports!Aspetta, c'è un altro modo per attraversare i rapporti JMP! Molti di noi hanno familiarità con i documenti XML. Per coloro che non lo sono, XML sta per Extensible Markup Language. È un linguaggio di markup che stabilisce un insieme di regole per documenti leggibili e comprensibili dalle macchine. XPath è un linguaggio di query che ti consente di navigare nei tuoi documenti XML.
Sebbene XML assomigli un po' all'HTML, i loro scopi sono diversi. Lo scopo dell'HTML è quello di visualizzare il contenuto, mentre lo scopo dell'XML riguarda maggiormente l'archiviazione dei dati e la trasmissione del contenuto.
Discutiamo alcuni dei componenti principali di un documento XML:
- Tag – I tag sono ciò che rende XML un po' simile all'HTML. I tag generalmente iniziano con un'apertura minore di segno (<) e terminano con una chiusura maggiore di segno (>). Il nome del tag è specificato tra i segni < e > e non è un valore predefinito. Invece, l'autore del documento deve stabilire i nomi dei tag. Come in HTML, i tag devono essere chiusi con una barra per rappresentare un tag finale (ad esempio, content ).
- Elementi – Un elemento è costituito da un'intera istruzione tag, se vuoi. Un elemento inizia con il < del tag di apertura fino al > del tag di chiusura incluso. Gli elementi possono contenere anche altri elementi.
- Attributi – Gli attributi sono metadati o dettagli aggiuntivi su un elemento. Un attributo è specificato nel tag di apertura e può avere un solo valore, specificato tra virgolette doppie. Un tag può avere più attributi, ma solo uno per ogni tipo.
- Contenuto – Il contenuto sono i dati. Sono il testo, i numeri e altri caratteri tra i tag di apertura e chiusura che costituiscono un elemento.
Considera il seguente file XML di esempio. Il openTables element è l'elemento radice in cui compaiono tutti gli altri elementi. L'elemento table ha un attributo chiamato attuale , che ha un valore di 0 o 1. All'interno di ogni elemento della tabella ci sono tre elementi aggiuntivi: nome , numCols , e numRighe . I dati vengono visualizzati tra i tag.
<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>
Ora che abbiamo compreso la struttura di un documento XML, possiamo applicare tale conoscenza alla struttura di un report JMP come documento XML. Per visualizzare la rappresentazione XML di un report JMP, inviare il file Ottieni XML messaggio al livello del rapporto. L'XML apparirà nel registro ( Visualizza > Registro ).

Diamo un'occhiata a un esempio. Si supponga di voler determinare a livello di codice il numero di riquadri struttura visualizzati in un rapporto di distribuzione.
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :height ),
Horizontal Layout( 1 ),
Vertical( 0 )
)
);
Potresti usare JSL per scorrere le caselle di visualizzazione e controllarne il tipo, ma sarebbe un compito piuttosto noioso. Invece, diamo un'occhiata alla rappresentazione XML.
Write( Report( dist ) << Get XML );
Il risultato mostrato nel registro è una stringa lunga quasi 180 righe. Non essere sopraffatto! Scorri fino all'inizio del registro e osserva solo il primo tag:
Il tag è denominato OutlineBox e ha quattro attributi: larghezza , altezza , chiave di aiuto , e è aperto . Tutto ciò che viene dopo è il contenuto dell'elemento, che è il titolo del riquadro struttura e altri elementi. Osservando gli altri elementi, nota che i nomi degli elementi sono gli stessi dei nomi delle caselle di visualizzazione nella struttura ad albero ma in un formato XML.
Figura 7.5 Elementi XML rispetto alla struttura ad albero
< OutlineBox attributi> Titolo < ListBox attributi> < Dropbox attributi> < SpacerBox attributi> Dropbox > < OutlineBox attributi> Titolo eccetera… |
 |
Ora che conosciamo il nome del tag dell'elemento che stiamo cercando, esploriamo come possiamo usare XPath per scoprire quante Outline Box ci sono.

In JMP, il XPath() il messaggio viene inviato all'oggetto piattaforma o all'oggetto report. Il suo argomento è un'espressione XPath utilizzata per recuperare informazioni dalla rappresentazione XML del report. Non devi usare Ottieni XML prima di poter utilizzare il XPath() Messaggio. Ma potresti trovare utile rivedere la struttura e gli attributi disponibili.
Quanto segue cercherà nel rapporto eventuali Riquadri struttura e restituirà un elenco di riferimenti a ciascuna Riquadri struttura.
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/*: obList = {DisplayBox[OutlineBox], DisplayBox[OutlineBox], DisplayBox[OutlineBox], DisplayBox[OutlineBox]}; |
Potremmo semplicemente usare il NItems() funzione attiva obLista per ottenere il numero di riferimenti di Outline Box vengono memorizzati nell'elenco. Oppure, mentre impari di più sul linguaggio XPath, puoi usare il Conteggio XPath() funzione per restituire il conteggio invece di un riferimento a ciascuna struttura.
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
Ora diamo un'occhiata a un esempio più interessante. Si supponga di voler visualizzare solo le colonne Mean e Std Dev in una tabella Means e Std Deviations di un report a senso unico.
Figura 7.6 Oneway con medie e deviazioni Std
 |
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 )
);
|
Possiamo restituire un elenco dei soli riferimenti di Number Col Box nella tabella Means e Std Deviations utilizzando
una combinazione di subscripting e XPath:
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
Usando un JSL Per() loop, possiamo controllare l'intestazione della colonna e modificare la proprietà di visibilità in
compresso se l'intestazione è qualcosa di diverso da Mean o Std Dev.
/* 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" )
);
);
Ma ancora una volta, c'è un modo in XPath per ottenere lo stesso risultato senza la necessità del Per() ciclo continuo. Aspetto
in un estratto della rappresentazione XML di un numero Col Box dal rapporto:
Numero
Si noti che c'è un elemento all'interno di NumeroColBox elemento chiamato NumeroColBoxHeader . Questo
contiene l'intestazione della colonna del report. XPath ci consente di acquisire quel testo ed eseguire
confronti. Solo riferimenti alle caselle numeriche che hanno un'intestazione diversa da Media
o Std Dev vengono restituiti in un elenco.
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
Questa query XPath esamina NumeroColBoxHeader elementi che compaiono all'interno di a NumeroColBox elemento. La funzione Testo estrae il testo dal file NumeroColBoxHeader elemento. In questo esempio, se il testo soddisfa i criteri, il che significa che il testo non è medio e non Std Dev, il riferimento viene restituito in un elenco.
Invio del Visibilità() messaggio a quell'elenco applica l'impostazione a ogni elemento nell'elenco.
colsToHide << Visibility( "Collapse" );
Figura 7.7 Dopo che le colonne sono nascoste

Rosemary Lucas e spero che tu abbia trovato questi esempi utili per navigare nei rapporti JMP. Per ulteriori informazioni sulla navigazione dei rapporti in modo programmatico, consulta Passa a JMP Scripting, seconda edizione .

*Nota: Fonte ClipArt: Clipart di segnali stradali in bianco