*보고서에서 특정 정보를 추출하는 것은 어려울 수 있습니다. 우리 중 많은 사람들이 탐색하는 방법을 배웠습니다. 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판으로 이동 JMP 보고서의 XML 표현에 XPath 쿼리 언어를 적용하는 방법을 설명합니다.
XPath
Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!Wait, there’s another way to traverse JMP reports!잠깐, JMP 보고서를 탐색하는 또 다른 방법이 있습니다! 우리 중 많은 사람들이 XML 문서에 익숙합니다. 그렇지 않은 사람들을 위해 XML은 Extensible Markup Language를 나타냅니다. 기계가 읽고 이해할 수 있는 문서에 대한 일련의 규칙을 설정하는 마크업 언어입니다. XPath는 XML 문서를 탐색할 수 있게 해주는 쿼리 언어입니다.
XML은 HTML과 꽤 비슷해 보이지만 그 목적은 다릅니다. HTML의 목적은 콘텐츠를 표시하는 반면 XML의 목적은 데이터 저장 및 콘텐츠 전달에 관한 것입니다.
XML 문서의 몇 가지 기본 구성 요소에 대해 논의해 보겠습니다.
- 태그 – 태그는 XML을 HTML처럼 보이게 만드는 것입니다. 태그는 일반적으로 보다 작은 기호(<)로 시작하여 보다 큰 기호(>)로 끝납니다. 태그 이름은 < 및 > 기호 사이에 지정되며 미리 정의된 값이 아닙니다. 대신 문서 작성자가 태그 이름을 설정해야 합니다. HTML에서와 마찬가지로 종료 태그를 나타내려면 슬래시로 태그를 닫아야 합니다(예: 내용 ).
- 강요 – 원하는 경우 요소는 전체 태그 문으로 구성됩니다. 요소는 여는 태그의 <로 시작하여 닫는 태그의 >까지 포함합니다. 요소에는 다른 요소도 포함될 수 있습니다.
- 속성 – 속성은 요소에 대한 메타데이터 또는 추가 세부 정보입니다. 속성은 여는 태그에 지정되며 큰따옴표로 지정된 하나의 값만 가질 수 있습니다. 태그는 여러 속성을 가질 수 있지만 각 유형은 하나만 가질 수 있습니다.
- 콘텐츠 – 콘텐츠는 데이터입니다. 요소를 구성하는 여는 태그와 닫는 태그 사이의 텍스트, 숫자 및 기타 문자입니다.
다음 예제 XML 파일을 고려하십시오. 그만큼 오픈 테이블 요소는 다른 모든 요소가 나타나는 루트 요소입니다. 테이블 요소에는 다음과 같은 속성이 있습니다. 현재의 , 값은 0 또는 1입니다. 각 테이블 요소 안에는 세 가지 추가 요소가 있습니다. 이름 , numCols , 그리고 numRows . 태그 사이에 데이터가 나타납니다.
Big Class
5
40
Fitness
9
31
이제 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줄 길이의 문자열입니다. 압도하지 마십시오! 로그 상단으로 스크롤하여 첫 번째 태그만 확인합니다.
태그의 이름은 아웃라인박스 네 가지 속성이 있습니다. 너비 , 키 , helpKey , 그리고 isOpen . 다음에 오는 모든 것은 개요 상자 및 기타 요소의 제목인 요소의 내용입니다. 다른 요소를 보면 요소 이름이 트리 구조의 표시 상자 이름과 동일하지만 XML 형식임을 알 수 있습니다.
그림 7.5 XML 요소와 트리 구조 비교
< 아웃라인박스 속성> 제목 < 리스트 박스 속성> < 드롭 박스 속성> < 스페이서박스 속성> 드롭 박스 > < 아웃라인박스 속성> 제목 등… |
 |
이제 찾고 있는 요소의 태그 이름을 알았으므로 XPath를 사용하여 얼마나 많은 개요 상자가 있는지 알아내는 방법을 살펴보겠습니다.

JMP에서는 XPath() 메시지는 플랫폼 개체 또는 보고서 개체로 전송됩니다. 해당 인수는 보고서의 XML 표현에서 정보를 검색하는 데 사용되는 XPath 식입니다. 당신은 사용할 필요가 없습니다 XML 가져오기 사용하기 전에 XPath() 메시지. 그러나 구조와 사용 가능한 속성을 검토하는 것이 도움이 될 수 있습니다.
다음은 개요 상자에 대한 보고서를 검색하고 각 개요 상자에 대한 참조 목록을 반환합니다.
obList = Report( dist ) << XPath( "//OutlineBox" );
Show( obList );
/*: obList = {DisplayBox[개요 상자], DisplayBox[개요 상자], DisplayBox[개요 상자], 디스플레이박스[아웃라인박스]}; |
우리는 단순히 N항목() 기능 obList 개요 상자 참조 수를 얻기 위해 목록에 저장됩니다. 또는 XPath 언어에 대해 자세히 배우면서 다음을 사용할 수 있습니다. XPath 수() 각 개요 상자에 대한 참조 대신 개수를 반환하는 함수.
obCount = N Items( Report( dist ) << XPath( "//OutlineBox" ) );
//OR
obCount = Report( dist ) << XPath( "count(//OutlineBox)" );
이제 좀 더 흥미로운 예를 살펴보겠습니다. Oneway 보고서의 Means 및 Std Deviations 테이블에 Mean 및 Std Dev 열만 표시하려고 한다고 가정합니다.
그림 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 Std Deviations 테이블 아래에 있는 Number Col Box 참조 목록만 반환할 수 있습니다.
첨자와 XPath의 조합:
/* Return a list of NumberColBox references */
ncbList = Report( ow )["Means and Std Deviations"] << XPath( "//NumberColBox" );
JSL 사용 을 위한() 루프에서 열의 제목을 확인하고 가시성 속성을 다음으로 변경할 수 있습니다.
제목이 Mean 또는 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" )
);
);
그러나 다시 말하지만 XPath에는 을 위한() 고리. 바라보다
보고서에서 Number Col Box의 XML 표현 발췌:
숫자
안에 요소가 있음에 유의하십시오. NumberColBox 라는 요소 NumberColBox헤더 . 이것
요소에는 보고서 열 머리글이 포함됩니다. XPath를 사용하면 해당 텍스트를 캡처하고 수행할 수 있습니다.
비교. 평균 이외의 제목이 있는 숫자 열 상자에 대한 참조만
또는 Std Dev가 목록으로 반환됩니다.
colsToHide = Report( ow )["Means and Std Deviations"] << XPath(
"//NumberColBox[NumberColBoxHeader[not(text() = 'Mean')
and not(text() = 'Std Dev')]]"
);
이 XPath 쿼리는 NumberColBox헤더 안에 나타나는 요소 NumberColBox 요소. Text 함수는 다음에서 텍스트를 추출합니다. NumberColBox헤더 요소. 이 예에서 텍스트가 기준을 충족하면 즉, 텍스트가 의미가 없고 Std Dev가 아닌 경우 참조가 목록으로 반환됩니다.
보내는 중 시계() 해당 목록에 대한 메시지는 목록의 모든 항목에 설정을 적용합니다.
colsToHide << Visibility( "Collapse" );
그림 7.7 열이 숨겨진 후 단방향

Rosemary Lucas와 저는 이러한 예가 JMP 보고서를 탐색하는 데 도움이 되었기를 바랍니다. 프로그래밍 방식으로 보고서 탐색에 대한 자세한 내용은 다음을 확인하세요. JMP 스크립팅, 제2판으로 이동 .

*참고: 클립아트 출처: 빈 도로 표지판클립 아트
어떤 유형의 개요 상자에 대해 이야기하고 있습니까? OutlineBox()를 사용하여 윤곽선 상자를 만들 수 있으며, 예를 들어 << Set Menu Script를 사용하여 빨간색 삼각형 옵션을 설정할 수 있습니다.
Names Default To Here(1);
New Window("Example",
fontobj = ob = Outline Box("Outline Box",
V List Box(
ob2 = Outline Box("Outline Box 2",
H List Box(
Text Edit Box("Top Left"),
Text Edit Box("Top Right")
)
),
ob3 = Outline Box("Outline Box 3",
H List Box(
Text Edit Box("Bottom Left"),
Text Edit Box("Bottom Right")
)
)
)
)
);
ob << Set Menu Script(
{"Beep", Beep(), "Beep Twice", Beep() ; Wait(1.0) ; Beep() ; ,
"", 0, "Get Menu Script", Print(ob << Get Menu Script)}
);
정확한 표시 상자를 복제하려면 Clone Box를 사용한 다음 모든 하위 상자를 제거하면 됩니다. 이와 같은 작업을 수행하면 잠재적으로 많은 문제가 발생할 수 있습니다.
Names Default To Here(1);
dt = open("$SAMPLE_DATA/Big Class.jmp");
dist = dt << Distribution(Nominal Distribution(Column(:sex)), Histograms Only);
obs = dist << XPath("//OutlineBox[@helpKey = 'Distrib']");
ob = obs[1];
obc = ob << Clone Box;
While(!IsEmpty(curchild = obc << child),
curchild << delete box;
);
obc << get xml;