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

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

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

*참고: 클립아트 출처: 빈 도로 표지판클립 아트