데이터베이스 애플리케이션 생성기는 JET2를 코드 생성 템플리트 시스템으로 사용합니다. 이 주제에서는 JET2 템플리트 및 변환 출력의 예제를 제공합니다.
템플리트 시스템으로서 JET2는 JSP 페이지 작성과 비슷한 역할을 합니다. 필요한 위치에서 태그 라이브러리 및 Java™ 스니펫을 지원합니다. 템플리트가 특정 모델의 스펙에 작성된 경우 JET2는 EMF 모델을 입력으로 직접 사용할 수도 있습니다.
http://www.ibm.com/developerworks/opensource/library/os-ecl-jet/
<?xml version="1.0" encoding="UTF-8"?>
<dataAccess:Employee xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:dataAccess="http:///dataAccess.ecore" name="Bob Smith" address="123 Main St" employeeNumber="12345">
<customers name="Sam Brown" address="55 Bank St">
<orders orderNumber="101" date="2005-12-15T00:00:00.000-0500" quantity="25"/>
<orders orderNumber="13" date="2005-11-15T00:00:00.000-0500" quantity="55"/>
</customers>
<customers name="Tim Safari" address="18 Elephant Rd">
<orders orderNumber="77" date="2005-11-20T00:00:00.000-0500" quantity="3"/>
</customers>
</dataAccess:Employee>
<%@taglib prefix="ws" id="org.eclipse.emf.jet2.workspaceTags" %> <%-- run a template that lists employees and creates a file list.txt --%> <ws:file template="templates/listEmployees.jet" path="list.txt"/>
<%@taglib prefix="c" id="org.eclipse.emf.jet2.controlTags" %>
<%-- /selects the document root, which in this case is the emf Resource object --%>
<%-- /selects the contents of the Resource.getContents() --%>
<c:iterate select="/contents" var="employee">
Employee: <c:get select="$employee/@name"/> (<c:get select="$employee/@employeeNumber"/>), <c:get select="$employee/@address"/>
<c:iterate select="$employee/customers" var="customer">
Customer: <c:get select="$customer/@name"/>, <c:get select="$customer/@address"/>
<c:iterate select="$customer/orders" var="order">
Order: <c:get select="$order/@orderNumber"/>, <c:get select="$order/@date"/>, qty: <c:get select="$order/@quantity"/>
</c:iterate>
</c:iterate>
</c:iterate>
Orders for 'Sam Brown'
<c:iterate select="/contents/customers [@name='Sam Brown']/orders" var="order">
Order: <c:get select="$order/@orderNumber"/>, <c:get select="$order/@date"/>, qty: <c:get select="$order/@quantity"/>
</c:iterate>
XPath 표현식을 평가하고(일종의 결과 세트 가져옴) 결과 세트의 각 요소에 대한 태그 컨텐츠 시간을 처리합니다.
XPath 표현식을 평가하고, 결과를 문자열로 변환하여, 템플리트 출력에 작성합니다.
XPath 표현식이 평가될 때 맨 앞에 있는 /가 EMF 자원 오브젝트에 맵핑됩니다. 자원의 루트 요소에는 contents 하위(/contents)를 참조하여 액세스합니다. 이 작업은 Resource.getContents()를 호출하는 것과 같습니다. 예를 들어, <c:iterate select="/contents" var="employee"> 태그는 Resource.getContents() 결과 세트에서 반복됩니다. 각 반복에서, employee 변수가 결과 세트의 현재 요소를 가리킵니다.
초기 자원 오브젝트 이후 <c:iterate select="$employee/customers" var="customer"> 태그
<c:get select="$employee/@name"/>이렇게 하면 Employee의 name 속성 값(Employee.getName())이 리턴됩니다.
<c:iterate select="/contents/customers [@name='Sam Brown']/orders" var="order">이 코드는 name 속성이 Sam Brown인 고객을 찾고, 해당 주문을 찾아, 이를 반복합니다.
Employee: Bob Smith (12345), 123 Main St
Customer: Sam Brown, 55 Bank St
Order: 101, Thu Dec 15 00:00:00 EST 2005, qty: 25
Order: 13, Tue Nov 15 00:00:00 EST 2005, qty: 55
Customer: Tim Safari, 18 Elephant Rd
Order: 77, Sun Nov 20 00:00:00 EST 2005, qty: 3
Orders for 'Sam Brown'
Order: 101, Thu Dec 15 00:00:00 EST 2005, qty: 25
Order: 13, Tue Nov 15 00:00:00 EST 2005, qty: 55
추가 정보는 JET 학습서를 참조하십시오.