*Obtener información específica de sus informes puede ser un desafío. Para muchos de nosotros, aprendimos a navegar nuestro JMP informes utilizando un método de subíndice para acceder a los valores que queríamos. La ventana Estructura de árbol era nuestra amiga (y lo sigue siendo) para mostrarnos todos los cuadros de visualización que componen el informe.
Es posible que haya comenzado usando los números que se muestran entre paréntesis junto a los nombres de los cuadros de visualización para asegurarse de que tenía el correcto. Y luego su colega, que tenía preferencias diferentes o una versión diferente de JMP, ejecutó su secuencia de comandos pero no obtuvo los mismos resultados que usted.
Report( ow )[Number Col Box( 8 )][1];
Fue desconcertante, pero pronto aprendió un enfoque más sólido utilizando referencias relativas. Es decir, navegó por el informe subíndice usando el título del cuadro de contorno que contenía la información deseada.
Report( ow )[Outline Box( "Summary of Fit" )][Number Col Box( 1 )][1];
Espere, hay otra forma de recorrer los informes de JMP, ¡y creo que le va a gustar!
El siguiente es un extracto de Ingrese a JMP Scripting, segunda edición que analiza cómo puede aplicar el lenguaje de consulta XPath a la representación XML de sus informes JMP.
XPath
Wait, there’s another way to traverse JMP reports!Espere, ¡hay otra forma de atravesar los informes de JMP! Muchos de nosotros estamos familiarizados con los documentos XML. Para aquellos que no lo son, XML significa Extensible Markup Language. Es un lenguaje de marcado que establece un conjunto de reglas para que los documentos sean legibles y entendidos por las máquinas. XPath es un lenguaje de consulta que le permite navegar por sus documentos XML.
Aunque XML se parece bastante a HTML, sus propósitos son diferentes. El propósito de HTML es mostrar contenido, mientras que el propósito de XML es más sobre el almacenamiento de datos y la transmisión de contenido.
Analicemos algunos de los componentes principales de un documento XML:
- Etiquetas – Las etiquetas son lo que hace que XML se parezca un poco a HTML. Las etiquetas generalmente comienzan con un signo de apertura menor que (<) y terminan con un signo de cierre mayor que (>). El nombre de la etiqueta se especifica entre los signos < y > y no es un valor predefinido. En su lugar, el autor del documento debe establecer los nombres de las etiquetas. Al igual que en HTML, las etiquetas deben cerrarse con una barra diagonal para representar una etiqueta final (por ejemplo, contenido ).
- Elementos – Un elemento consta de una declaración de etiqueta completa, por así decirlo. Un elemento comienza con el < de la etiqueta de apertura hasta el final e incluye el > de la etiqueta de cierre. Los elementos también pueden contener otros elementos.
- Atributos – Los atributos son metadatos o detalles adicionales sobre un elemento. Un atributo se especifica en la etiqueta de apertura y solo puede tener un valor, especificado entre comillas dobles. Una etiqueta puede tener varios atributos, pero solo uno de cada tipo.
- Contenido – El contenido son los datos. Es el texto, los números y otros caracteres entre las etiquetas de apertura y cierre lo que constituye un elemento.
Considere el siguiente archivo XML de ejemplo. los mesas abiertas elemento es el elemento raíz en el que aparecen todos los demás elementos. El elemento de la tabla tiene un atributo llamado Actual , que tiene un valor de 0 o 1. Dentro de cada elemento de la tabla hay tres elementos adicionales: nombre , numCols , y número de filas . Los datos aparecen entre las etiquetas.
<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>
Ahora que comprendemos la estructura de un documento XML, podemos aplicar ese conocimiento a la estructura de un informe JMP como un documento XML. Para ver la representación XML de un informe JMP, envíe el Obtener XML mensaje a la capa de informe. El XML aparecerá en el registro ( Ver > Registro ).

Veamos un ejemplo. Suponga que desea determinar mediante programación cuántos cuadros de esquema aparecen en un informe de distribución.
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :height ),
Horizontal Layout( 1 ),
Vertical( 0 )
)
);
Podría usar JSL para recorrer los cuadros de visualización y verificar su tipo, pero sería una tarea bastante tediosa. En cambio, veamos la representación XML.
Write( Report( dist ) << Get XML );
El resultado que se muestra en el registro es una cadena de casi 180 líneas. ¡No te sientas abrumado! Desplácese hasta la parte superior del registro y mire solo la primera etiqueta:
La etiqueta se llama ContornoCuadro y tiene cuatro atributos: ancho , altura , llave de ayuda , y Esta abierto . Todo lo que viene a continuación es el contenido del elemento, que es el título del cuadro de esquema y otros elementos. Al observar los demás elementos, observe que los nombres de los elementos son los mismos que los nombres de los cuadros de visualización en la estructura de árbol, pero en formato XML.
Figura 7.5 Elementos XML comparados con la estructura de árbol
< ContornoCuadro atributos> Título < Cuadro de lista atributos> < DropBox atributos> < caja espaciadora atributos> DropBox > < ContornoCuadro atributos> Título etc… |
 |
Ahora que sabemos el nombre de la etiqueta del elemento que estamos buscando, exploremos cómo podemos usar XPath para averiguar cuántos cuadros de contorno hay.

En JMP, la XPath() el mensaje se envía al objeto de plataforma o al objeto de informe. Su argumento es una expresión XPath utilizada para recuperar información de la representación XML del informe. No tienes que usar Obtener XML antes de poder usar el XPath() mensaje. Pero puede resultarle útil revisar la estructura y los atributos disponibles.
Lo siguiente buscará en el informe cualquier cuadro de esquema y devolverá una lista de referencias a cada cuadro de esquema.
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/*: obList = {DisplayBox[OutlineBox], DisplayBox[OutlineBox], DisplayBox[OutlineBox], Cuadro de visualización [Cuadro de contorno]}; |
Podríamos simplemente usar el NIelementos() función en obLista para obtener el número de referencias de la caja de esquema almacenadas en la lista. O a medida que aprende más sobre el lenguaje XPath, puede usar el Recuento de XPath() función para devolver el recuento en lugar de una referencia a cada cuadro de esquema.
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
Ahora veamos un ejemplo más interesante. Supongamos que quisiéramos mostrar solo las columnas Media y Desviación estándar en una tabla de Medias y Desviaciones estándar de un informe Oneway.
Figura 7.6 Unidireccional con medias y desviaciones estándar
 |
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 )
);
|
Podemos devolver una lista de solo las referencias de Number Col Box en la tabla Means and Std Deviations usando
una combinación de subíndices y XPath:
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
Usando un JSL Para() bucle, podemos verificar el encabezado de la columna y cambiar la propiedad de visibilidad a
colapsado si el encabezado es diferente a 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" )
);
);
Pero de nuevo, hay una forma en XPath de lograr el mismo resultado sin la necesidad de la Para() círculo. Mirar
en un extracto de la representación XML de un Number Col Box del informe:
Número
Note que hay un elemento dentro del NúmeroColBox elemento llamado NúmeroColBoxHeader . Este
El elemento contiene el encabezado de la columna del informe. XPath nos permite capturar ese texto y realizar
comparaciones Solo las referencias a los cuadros de columnas numéricas que tienen un encabezado que no sea la media
o Std Dev se devuelven en una lista.
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
Esta consulta XPath analiza NúmeroColBoxHeader elementos que aparecen dentro de un NúmeroColBox elemento. La función Texto extrae el texto de la NúmeroColBoxHeader elemento. En este ejemplo, si el texto cumple con los criterios, lo que significa que el texto no es malo ni estándar, la referencia se devuelve en una lista.
enviando el Visibilidad() mensaje a esa lista aplica la configuración a cada elemento de la lista.
colsToHide << Visibility( "Collapse" );
Figura 7.7 Unidireccional después de ocultar las columnas

Rosemary Lucas y espero que estos ejemplos le hayan resultado útiles para navegar por sus informes JMP. Para obtener más información sobre cómo navegar por sus informes mediante programación, consulte Ingrese a JMP Scripting, segunda edición .

*Nota: fuente de imágenes prediseñadas: Imágenes Prediseñadas de señales de tráfico en blanco