2012-07-05 2 views
1

반복 노드 값을 다른 반복 노드에 복사하는 좋은 방법을 찾을 수 없습니다. 공통 프로그래밍 언어에서 나는 한 배열의 내용을 다른 배열에 복사하는 것을 말합니다.반복 노드 값을 Orbeon의 다른 반복 노드에 복사하는 방법

체크 박스가 (작업을 시작하는 이벤트를) 체크
  <xforms:instance id="main-instance"> 
       <contacts> 
        <contact> 
         <contact-id>111</contact-id> 
         <contact-name></contact-name> 
         <contact-location></contact-location> 
        </contact> 
        <contact> 
         <contact-id>222</contact-id> 
         <contact-name></contact-name> 
         <contact-location></contact-location> 
        </contact> 
        <contact> 
         <contact-id>333</contact-id> 
         <contact-name></contact-name> 
         <contact-location></contact-location> 
        </contact> 
       </contacts> 

       <alternate-contacts> 
        <contact> 
         <alt-contact-id></alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
        <contact> 
         <alt-contact-id></alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
        <contact> 
         <alt-contact-id></alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
       </alternate-contacts> 
      </xforms:instance> 

, 난 등 1 alt-contact-id과에 1 contact-id 값을 복사해야합니다.

  <xforms:action ev:event="xforms-value-changed"> 
       //TO DO here 
      </xforms:action> 

아이디어

편집을 제공하십시오 : 그래서 확인란이 선택되면, <alternate-contacts> 노드는 도입이

   <alternate-contacts> 
        <contact> 
         <alt-contact-id>111</alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
        <contact> 
         <alt-contact-id>222</alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
        <contact> 
         <alt-contact-id>333</alt-contact-id> 
         <control-id></control-id> 
         <control-rules></control-rules> 
         <tranmission-method></tranmission-method> 
        </contact> 
       </alternate-contacts> 
+1

질문을 편집하고 정확한 결과를 제공 할 수 있습니까? 나는 이것이 XSLT를 사용하여 사소한 것이라고 생각한다. XSLT 솔루션을 고려해 주시겠습니까? –

+0

@Dimitre : 죄송합니다. 현재 XML 노드 이름이 잘못되어 있습니다. 이제 질문을 수정했습니다. 감사합니다 – Jayy

+0

@DimitreNovatchev : XForms에서 XSLT 솔루션을 사용할 수 있는지 확실하지 않습니다. – Jayy

답변

2

당신은 iterate attribute1을 찾고, 같이한다 XForms 2.0에서 곧 나올 예정이지만 이미 Orbeon Forms에서 지원하고 있습니다. Orbeon Forms는이 질문에 대한 태그를 기반으로 사용하는 것으로 보입니다. 그것으로, 당신은 쓸 수 있습니다 :

<xforms:action iterate="/root/contacts/contact"> 
    <xforms:var name="position" value="position()"/> 
    <xforms:var name="id" value="contact-id"/> 
    <xforms:setvalue ref="/root/alternate-contacts/contact[$position]/alt-contact-id" value="$id"/> 
</xforms:action> 

는 또한이 코드를 사용하여 full example를 참조하십시오.

1이 기능

은 오랫동안 지원하고있다, 당신은이 확장되었다 표시하기 위해 xxforms:iterate="…"를 사용했지만,이 곧 표준이 될 것입니다 때문에, 당신은 지금 막 iterate="…"를 사용할 수 있습니다.

+0

멋진. 나는 거의 거기에 있었지만 너 같은 변수는 사용하지 않았다. 제공된 많은 예제는 많은 초보자들에게 유용 할 것이기 때문에 높이 평가됩니다. 고맙습니다! – Jayy

+0

우수합니다. 확인해 주신 것에 대해 감사 드리며, 도움이되었습니다. – avernet