이 학습에서는 JET 입력 모델, XPath 표현식을 사용하여
입력 모델을 순회하는 방법 및 JET 조치를 입력 모델과 관련시키는 방법에 대해
추가로 조사합니다.
이 태스크 정보
JET 입력 모델 JET 변환 작성을 통해 작성하는
입력 모델의 특성은 다음과 같습니다.
- 모델은 계층 구조이며 단일 루트 요소를 가짐
- 모델에 있는 각 요소 유형에는 문자열 값을 가진 속성이
포함되어 있을 수 있음
- 요소 포함은 항상 0 이상의 카디널리티를
지정함
모델의 기능은
사용자에게 메타 모델 디자인에 대한 깊은 이해를 요구하지 않고 신속하게 모델에서
텍스트로 변환을 더 쉽게 작성할 수 있도록 의도적으로 제한됩니다.
JET 변환 및
조치 호출에 의한 모델 처리
JET 작성
편집기는 입력 모델을 처리하는 코드를 생성합니다. 이 코드는
main.jet 템플리트에 있으며 다음 특성을 가집니다.
- 생성된 코드는 모델의 깊이 우선 순회를 수행합니다.
- 코드는 모델을 두 번 처리합니다. 첫 번째 반복에서는 파생
속성 표현식을 평가합니다. 두 번째 반복에서는 프로젝트, 폴더 및 파일을 작성하는
JET 조치를 호출합니다. 파일을 작성하는 JET 조치는 JET 파일 조치라고 하며 JET 템플리트를 호출합니다.
- 처리 중에 각 모델 요소가 XPath 변수에 지정됩니다.
이 변수의 이름은 편집기 영역에 표시되는 요소 유형의 특성 보기에 정의됩니다.
기본적으로 변수의 이름은 모델 요소의 이름과 동일합니다. XPath 표현식에서
XPath 변수의 접두부에는 항상 달러 부호($)가 붙으므로 변수는 요소 이름과
구별될 수 있습니다.
- 요소 처리 중에 첫 번째 반복에서는 파생 속성을 계산하고 두 번째 반복에서는
JET 조치를 실행하며 하위 모델 요소를 처리합니다.
- 파생 속성 계산 및 JET 조치 호출 중에 현재 요소 및 현재 요소의 모든 상위
요소와 연관된 XPath 변수를 사용할 수 있습니다. 따라서 JET 파일 조치가 호출하는
JET 템플리트, JET 조치 및 파생 속성 계산에서는 XPath 변수를 사용하여
현재 처리된 요소 또는 이의 상위 요소를 참조할 수 있습니다.
예제로 이 모듈의 모델을 고려하십시오. 다음 이미지에는
"입력 스키마 및 출력 조치" 분할창의 컨텐츠가 표시됩니다.
Create
File 조치: letter.html 및 연관된 JET 템플리트(templates/letter.html.jet)는
루트 요소 아래에 메일링 요소가 있을 때마다 호출됩니다.
해당 조치와 템플리트는 둘 다 XPath 변수($mailing 및
$root)에 액세스할 수 있습니다. 조치 매개변수 및 텍스트로 바꾸기에서는
메일링 및 루트 요소 유형에 속하는 속성을 사용할 수 있습니다.
XPath 표현식 및 이름 바꾸기
모델 요소
JET 작성 기능에서 작성하는 XPath 표현식의
양식은 항상 $variable/@attribute입니다. 변수 이름 또는 요소 유형의 이름이
바뀌는 경우 JET 작성 기능은 이러한 표현식을 리팩터합니다. 그러나
이 리팩토링은 JET 템플리트까지 확장되지 않습니다. 즉, JET 작성 편집기에서
변수 또는 요소 유형의 이름을 바꾸면 이전 변수 이름을 사용하는 JET 템플리트에서
XPath 표현식이 중단됩니다.