* Extraire des informations spécifiques de vos rapports peut être difficile. Pour beaucoup d'entre nous, nous avons appris à naviguer dans notre JMP rapports en utilisant une méthode d'indice pour accéder aux valeurs que nous voulions. La fenêtre Tree Structure était notre amie (et l'est toujours) pour nous montrer toutes les cases d'affichage qui composent le rapport.
Vous avez peut-être commencé à utiliser les numéros indiqués entre parenthèses à côté des noms des zones d'affichage pour vous assurer que vous aviez le bon. Et puis votre collègue, qui avait des préférences différentes ou une version différente de JMP, a exécuté votre script mais n'a pas obtenu les mêmes résultats que vous.
Report( ow )[Number Col Box( 8 )][1];
C'était déroutant, mais vous avez rapidement appris une approche plus robuste utilisant le référencement relatif. Autrement dit, vous avez navigué dans le rapport en inscrivant le titre de l'OutlineBox contenant les informations souhaitées.
Report( ow )[Outline Box( "Summary of Fit" )][Number Col Box( 1 )][1];
Attendez, il existe une autre façon de parcourir les rapports JMP - et je pense que vous allez l'aimer !
Ce qui suit est un extrait de Découvrez JMP Scripting, deuxième édition qui explique comment vous pouvez appliquer le langage de requête XPath à la représentation XML de vos rapports JMP.
XPath
Wait, there’s another way to traverse JMP reports!Attendez, il existe un autre moyen de parcourir les rapports JMP ! Beaucoup d'entre nous connaissent les documents XML. Pour ceux qui ne le sont pas, XML signifie Extensible Markup Language. C'est un langage de balisage qui établit un ensemble de règles pour les documents lisibles et compris par les machines. XPath est un langage de requête qui vous permet de naviguer dans vos documents XML.
Bien que XML ressemble un peu à HTML, leurs objectifs sont différents. Le but de HTML est d'afficher du contenu, tandis que le but de XML est davantage de stocker des données et de transmettre du contenu.
Examinons quelques-uns des principaux composants d'un document XML :
- Mots clés – Les balises sont ce qui fait que XML ressemble un peu à HTML. Les balises commencent généralement par une ouverture inférieure au signe (<) et se terminent par une fermeture supérieure au signe (>). Le nom de la balise est spécifié entre les signes < et >, et il ne s'agit pas d'une valeur prédéfinie. Au lieu de cela, l'auteur du document doit établir les noms des balises. Comme en HTML, les balises doivent être fermées par une barre oblique pour représenter une balise de fin (par exemple, content ).
- Éléments – Un élément consiste en une déclaration de balise entière, si vous voulez. Un élément commence par le < de la balise d'ouverture jusqu'au > de la balise de fermeture. Les éléments peuvent également contenir d'autres éléments.
- Les attributs – Les attributs sont des métadonnées ou des détails supplémentaires sur un élément. Un attribut est spécifié dans la balise d'ouverture et ne peut avoir qu'une seule valeur, spécifiée entre guillemets doubles. Une balise peut avoir plusieurs attributs, mais un seul de chaque type.
- Contenu – Le contenu est les données. C'est le texte, les nombres et les autres caractères entre les balises d'ouverture et de fermeture qui constituent un élément.
Considérez l'exemple de fichier XML suivant. La tables ouvertes element est l'élément racine dans lequel tous les autres éléments apparaissent. L'élément table a un attribut appelé courant , qui vaut 0 ou 1. À l'intérieur de chaque élément de tableau se trouvent trois éléments supplémentaires : Nom , numCols , et nombreLignes . Les données apparaissent entre les balises.
<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>
Maintenant que nous comprenons la structure d'un document XML, nous pouvons appliquer ces connaissances à la structure d'un rapport JMP en tant que document XML. Pour voir la représentation XML d'un rapport JMP, envoyez le Obtenir XML message à la couche de rapport. Le XML apparaîtra dans le journal ( Affichage > Journal ).

Prenons un exemple. Supposons que vous souhaitiez déterminer par programmation le nombre de zones de contour apparaissant dans un rapport de distribution.
dt = Open( "$SAMPLE_DATA\Big Class.jmp" );
dist = dt << Distribution(
Stack( 1 ),
Continuous Distribution(
Column( :height ),
Horizontal Layout( 1 ),
Vertical( 0 )
)
);
Vous pouvez utiliser JSL pour parcourir les zones d'affichage et vérifier leur type, mais ce serait une tâche plutôt fastidieuse. Au lieu de cela, regardons la représentation XML.
Write( Report( dist ) << Get XML );
Le résultat affiché dans le journal est une chaîne de près de 180 lignes. Ne soyez pas submergé ! Faites défiler vers le haut du journal et regardez uniquement la première balise :
La balise est nommée ContourBox et il a quatre attributs : largeur , la taille , helpKey , et est ouvert . Tout ce qui vient ensuite est le contenu de l'élément, qui est le titre de la boîte de contour et d'autres éléments. Lorsque vous regardez les autres éléments, notez que les noms des éléments sont les mêmes que les noms des zones d'affichage dans l'arborescence, mais au format XML.
Figure 7.5 Éléments XML comparés à l'arborescence
< ContourBox attributs> Titre < Zone de liste attributs> < Boîte de dépôt attributs> < SpacerBox attributs> Boîte de dépôt > < ContourBox attributs> Titre etc… |
 |
Maintenant que nous connaissons le nom de la balise de l'élément que nous recherchons, explorons comment nous pouvons utiliser XPath pour savoir combien de boîtes de contour il y a.

Dans JMP, le XPath() message est envoyé soit à l'objet plate-forme, soit à l'objet rapport. Son argument est une expression XPath utilisée pour récupérer des informations à partir de la représentation XML du rapport. Vous n'êtes pas obligé d'utiliser Obtenir XML avant de pouvoir utiliser le XPath() message. Mais vous trouverez peut-être utile de revoir la structure et les attributs disponibles.
Ce qui suit recherchera dans le rapport toutes les boîtes de contour et renverra une liste de références à chaque boîte de contour.
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/* : obList = {DisplayBox[OutlineBox], DisplayBox[OutlineBox], DisplayBox[OutlineBox], DisplayBox[OutlineBox]} ; |
On pourrait simplement utiliser le Nitems() fonction sur obListe pour obtenir le nombre de références de boîte de contour sont stockées dans la liste. Ou à mesure que vous en apprenez plus sur le langage XPath, vous pouvez utiliser le Nombre XPath() fonction pour renvoyer le nombre au lieu d'une référence à chaque boîte de contour.
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
Voyons maintenant un exemple plus intéressant. Supposons que nous souhaitions afficher uniquement les colonnes Moyenne et Écart type dans un tableau Moyennes et Écarts type d'un rapport à sens unique.
Figure 7.6 Sens unique avec moyennes et écarts types
 |
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 )
);
|
Nous pouvons renvoyer une liste des références Number Col Box uniquement sous le tableau Means and Std Deviations en utilisant
une combinaison d'indices et de XPath :
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
Utiliser un JSL Pour() boucle, nous pouvons vérifier l'en-tête de la colonne et changer la propriété de visibilité en
réduit si l'en-tête est autre que Mean ou 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" )
);
);
Mais encore une fois, il existe un moyen dans XPath d'obtenir le même résultat sans avoir besoin de la Pour() boucle. Voir
à un extrait de la représentation XML d'un Number Col Box du rapport :
Numéro
Notez qu'il y a un élément dans le NombreColBox élément appelé NumberColBoxHeader . Cette
L'élément contient l'en-tête de colonne du rapport. XPath nous permet de capturer ce texte et d'effectuer
comparaisons. Seules les références aux cases Number Col qui ont un en-tête autre que Mean
ou Std Dev sont renvoyés dans une liste.
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
Cette requête XPath examine NumberColBoxHeader éléments qui apparaissent dans un NombreColBox élément. La fonction Texte extrait le texte du NumberColBoxHeader élément. Dans cet exemple, si le texte répond aux critères, c'est-à-dire que le texte n'est pas méchant et n'est pas Std Dev, alors la référence est renvoyée dans une liste.
Envoi du Visibilité() message à cette liste applique le paramètre à chaque élément de la liste.
colsToHide << Visibility( "Collapse" );
Figure 7.7 Sens unique après le masquage des colonnes

Rosemary Lucas et moi espérons que vous avez trouvé ces exemples utiles pour naviguer dans vos rapports JMP. Pour plus d'informations sur la navigation dans vos rapports par programmation, consultez Découvrez JMP Scripting, deuxième édition .

*Remarque : Source des images clipart : Vide, panneaux signalisations Clipart