XForms Tutorial > I-1.3.2. instance element

XForms Model 하위 요소로 구성되어 있는 Instance 엘리먼트는 실제 데이터를 처리하는 블럭 단위의 개념이다. 서버로 데이터를 서브밋 할 경우 특정 인스턴스 단위로 데이터를 보내게 되며, 또한 응답 데이터 결과를 특정 인스턴스 단위로 매핑 등 데이터 처리를 위한 레코드 단위 개념이다. 이 인스턴스 엘리먼트 하위에는 필드(노드)들이 존재한다. 이 노드에 사용자가 입력한 데이터를 바인딩시키거나 서버로부터 응답된 데이터들을 저장하게 된다. 모델 하위에는 여러 개의 인스턴스들이 존재할 수 있으며, 일반적으로 서버와의 하나의 트랜잭션 처리를 위하여 두 개의 인스턴스, 즉 Input/Output 구조를 갖는다. 또한 공통적으로 사용되는 트랜잭션, 예를 들어 공통 코드와 같이 여러 프로그램에서 사용되는 경우에는 하나의 인스턴스를 정의하여 재사용할 수 있는 Linking Attribute 구조를 제공한다.

Common Attributes

  • Common


Linking Attributes 외부 링크가 실패하면 Then XForms-Link-Exception Event에 따라 처리한다. Inline 정의와 Link 정의가 동시에 속성을 가지면 Link 정의가 우선된다.(The xForms-model-construct Event)

Sample> Input / Output 구조의 instance 구성
<?xml version="1.0" encoding="euc-kr"?>
<html xmlns="http://www.w3.org/1999/xhtml" 
 xmlns:xforms="http://www.w3.org/2002/xforms" 
 xmlns:ev="http://www.w3.org/2001/xml-events">
 
 <head>
 <title> Instance Sample </title>

 <xforms:model id="mymodel">
  <xforms:instance id="instRQ">
   <root xmlns="">
    <code> 217531 </code>
   </root>
  </xforms:instance>
  
  <xforms:instance id="instRS">
   <root xmlns="">
     <code />
     <name />
     <worker />
     <bdaynum />
     <cdaynum /> 
     <cdayper /> 
     <termnum />
     <termper /> 
     <assets />
     <stocks /> 
     <stocksp /> 
     <apply /> 
     <order /> 
   </root>  
  </xforms:instance>

  <xforms:bind id="bind_code" nodeset="instance('instRQ')/code" />
  <xforms:submission id="query" ref="instance('instRQ')" replace="all" instance="instRS" method="get" mediatype="application/xml" action="http://210.219.231.49/ncrmx/nx_220.aspx?type=R" indent="1" separator="&">
  </xforms:submission>
 </xforms:model> 
 </head>

 <body>
  <xforms:input bind="bind_code">
   <xforms:label> 코드 </xforms:label>
  </xforms:input>
  
  <xforms:submit submission="query">
   <xforms:label> 조회 </xforms:label>
  </xforms:submit>
 </body>
</html>
  • 하나의 모델(mymodel)에 두 개의 인스턴스인 instRQ와 instRS로 구성
  • 서버로 데이터를 전송할 인스턴스는 instRQ 이다. submission 엘리먼트의 ref 어트리뷰트를 통해서 정의
  • 서버의 결과를 매핑할 인스턴스는 instRQ 이다. submission 엘리먼트의 instance 어트리뷰트를 통해서 정의
  • 참조로 Request와 Response 인스턴스를 구분하는 방법은 XForms 1.1 Draft 에 정의되어 있으며, XForms 1.0은 이를 구분하지 않는다
Sample> instance reuse를 위한 Linking Attribute의 사용
<xforms:model id="model1">
    …(생략)…
 <xforms:instance id="realData">
  <root>
   <human>
    <userid></userid>
    <username />
    <tax>
     <taxsource>0</taxsource>
     <taxbill>0</taxbill>
     <taxpermonth during="2"></taxpermonth>
    </tax>
   </human>
  </root>
 </xforms:instance>
 <xforms:instance id="taxrateData" src="http://smit21.co.kr/code.xml" />
   …(생략)…

댓글 없음: