XFA Live 자식 컬렉션

JavaScript event는 form 노드나 property 노드의 현재 자식 노드를 읽기 전용 nodes property로 검사할 수 있습니다

const field = xfa.resolveNode("row[1].amount");
const children = field.font.nodes;
const snapshot = children.clone();
field.font.fill.color.value = "192,48,96";
const fill = children.item(0);

현재 자식 읽기

멤버동작
length현재 자식 노드 수
item(index)해당 0부터 시작하는 인덱스의 현재 자식. 음수, 비정수, 범위 밖 인덱스는 null
namedItem(name)그 literal 이름을 가진 첫 현재 자식. 맞는 자식이 없으면 null
nodes[index]item(index)과 같은 현재 노드
for...of자식 노드를 현재 순서대로 읽습니다
clone()현재 자식을 참조하는 독립 query 목록을 만듭니다

컬렉션은 읽기마다 현재 event 그래프를 통해 소유자를 해석합니다. script 객체가 event를 넘나드며 유지하는 컬렉션도 포함됩니다

기존 컬렉션은 반복 인스턴스 추가·제거와 암시적 property 생성을 반영합니다. 별개의 반복 인스턴스는 별개의 property 자식과 값을 유지합니다

소유자가 제거된 유지 컬렉션은 살아남은 인스턴스나 대체 인스턴스를 대상으로 삼는 대신 오류를 일으킵니다

FormCalc 접근

FormCalc는 nodes를 form, property, Data DOM 노드의 자식 컬렉션 property로 인식합니다

if (xfa.record.nodes.length >= 2) then
  xfa.record.nodes.item(1).nodes.namedItem("amount").rawValue = "Updated"
endif

직접 length, item(index), namedItem(name), clone() 멤버 체인은 JavaScript와 같은 현재 네이티브 노드와 컬렉션 한도를 씁니다

form, property, Data DOM 자식 컬렉션은 JavaScript와 FormCalc 모두에서 직접 nodes[index] 읽기를 지원합니다

컬렉션 인덱스는 0부터 시작합니다. for...of는 JavaScript 문법으로 남습니다

FormCalc 컬렉션 참조를 통한 쓰기는 실제 바인딩된 데이터 값을 갱신하고 반복 인스턴스 격리를 유지합니다. 커밋된 값은 XDP 저장, 런타임 리로드, 네이티브 PDF appearance 생성을 거쳐 남습니다

Data DOM 숫자 인덱스

const rows = xfa.record.nodes;
rows[1].nodes[0].rawValue = "Updated";

"0"과 "1" 같은 정규형 nonnegative 정수 키는 현재 Data DOM 자식을 해석하고 컬렉션 밖에서는 null을 반환합니다. "01", "-0", "1.0" 같은 비정규형 키는 숫자 항목을 별칭하지 않습니다

JavaScript index in nodes는 현재 자식 수를 검사하고, 정규형 숫자 항목의 직접 대입·삭제·재정의는 TypeError를 일으킵니다

같은 숫자 항목 제한은 컬렉션을 어휘 상태로 유지하는 script 객체 함수 안에서도, 다른 event가 그 함수가 반환한 컬렉션을 읽을 때도 적용됩니다

자식 재정렬이나 제거에는 기존 Data DOM 구조 메서드를 쓰세요. script 객체가 유지하는 컬렉션은 커밋된 편집마다와 rollback 뒤에 현재 event 그래프를 읽습니다

독립 clone

clone된 자식 목록은 XFA Query 노드 컬렉션에서 설명한 독립 저장소를 씁니다. append, insert, remove 메서드는 그 독립 저장소를 바꿉니다

어느 목록이 참조하는 노드에 쓰면 실제 네이티브 노드가 바뀌고, 커밋된 값과 property override는 저장 XDP와 네이티브 PDF 모양 생성을 거쳐 영속됩니다

Data DOM 자식 컬렉션도 독립 항목 저장소를 가진 clone()을 제공합니다. 기존 구조 append, insert, remove 메서드는 계속 네이티브 데이터 트리를 바꿉니다

트랜잭션과 한도

live 컬렉션 객체와 독립 clone은 event 컬렉션 할당 한도, 연산 검사, 트랜잭션 마감 시한을 공유합니다

잡히지 않은 event 오류나 예산 실패는 네이티브 값, 반복 인스턴스, 유지 script 상태, 독립 목록 저장소, 저널 상태를 함께 복원합니다

form과 property live 컬렉션은 읽기 전용입니다. 직접 대입, 삭제, property 재정의, prototype 변경, 확장 방지는 오류를 일으킵니다

Data DOM 컬렉션은 기존 이름 있는 구조 메서드와 일반 비숫자 property 동작을 유지하면서 정규형 숫자 항목의 쓰기, 삭제, 재정의를 거부합니다

커버리지

이 인터페이스는 현재 form과 property 자식 컬렉션, 독립 자식 목록 clone을 노출합니다

일반 template/form 노드 생성, 재귀 노드 복제, 자식 트리 삽입·제거, 추가 노드 클래스 바인딩은 별도 작업으로 남아 있습니다

트랜잭션 XFA Data DOM 구조 · XFA 위젯 런타임