네이티브 XFA Property DOM

EnableJavaScript가 켜진 일반 실행은 라이브 이벤트 트리에 폼 컨테이너의 프로퍼티 자식을 포함합니다. value, 타입화된 값, font, fill, color, ui, border, edge 노드가 여기에 듭니다

이름 있는 컨테이너는 SOM 경로에 자기 이름을 씁니다. 프로퍼티 노드는 클래스 이름을 쓰고 실제 name 속성을 유지하며, 이 속성은 보통 비어 있습니다

타입화된 값과 속성

const field = xfa.resolveNode("main.row[1].cell");
field.value.text.value = "25";
field.font.size = "18pt";
field.font.fill.color.value = "0,128,255";
field.ui.textEdit.multiLine = "1";
field.resolveNode("border.edge[1]").thickness = "3pt";
field.font.setAttribute("saved", "custom");
const saved = field.font.getAttribute("custom");

row[1].cell.value.text.value = 25
row[1].cell.font.size = "18pt"

field의 value 노드 아래 타입화된 자식은 field의 라이브 rawValue를 공유합니다. value.text.value, field.rawValue, 바인딩된 dataNode를 통한 읽고 쓰기는 서로를 즉시 봅니다

color처럼 value 속성을 가진 프로퍼티 노드에서 value 프로퍼티는 그 속성을 읽고 씁니다. 스칼라 콘텐츠 노드에서는 텍스트 콘텐츠를 읽고 씁니다

유효한 프로퍼티 바인딩에 있는 속성은 예약된 노드·엔진 멤버를 제외하고 직접 프로퍼티로 노출됩니다. getAttribute(name)는 임의 속성을 읽고, setAttribute(value, name)는 속성을 쓴 뒤 안전한 새 이름을 즉시 노출합니다

FormCalc는 같은 이벤트 트리로 프로퍼티 경로를 해석하고 스칼라 속성을 할당합니다. 프로퍼티 형제는 occurrence 인덱스와 클래스 셀렉터를 지원합니다

네이티브 영속성과 렌더링

성공한 쓰기는 네이티브 form packet에서 일치하는 컨테이너 occurrence 아래에 프로퍼티 노드를 만들거나 갱신합니다. 템플릿과 다른 반복 occurrence는 자기 기본값을 유지합니다

프로퍼티 조회는 이름 없는 노드를 건너뛰는 대신 이름 있는 컨테이너 아래의 클래스와 로컬 occurrence를 따릅니다. 프로퍼티 name 속성을 바꿔도 식별자가 유지되고, 저장된 XDP는 유효한 재정의를 다시 읽어 들입니다

유지된 프로퍼티 핸들은 발행된 오너 식별자를 따라 인스턴스 삽입과 이동을 견딥니다. 인스턴스가 제거된 뒤 핸들에 쓰면 중단되고 트랜잭션을 복원합니다

폰트 typeface와 size는 인스턴스별 가변 텍스트 측정과 reflow에 참여합니다. 플래트닝은 field occurrence마다 유효한 font, color, border, 문단, 지원 UI 속성을 읽습니다

리치 텍스트 draw는 occurrence마다 유효한 font, 문단, 인라인 CSS, 스칼라 콘텐츠 재정의를 소비합니다. 측정과 run 배치도 포함입니다

인스턴스 생성은 여러 edge 노드를 포함해 프로퍼티 형제 기본값을 전부 유지하고, 다른 occurrence의 재정의 대신 템플릿 속성 값을 씁니다

UI 재정의는 지원되는 위젯 선택을 만들고, 성공한 이벤트 후 실제 인스턴스별 런타임 종류와 네이티브 field 플래그를 바꿉니다

예산과 하위 수준 바인딩

프로퍼티 순회는 이벤트 노드, 깊이, 연산, 바이트 예산을 공유합니다. 네이티브 텍스트·속성 쓰기는 MaxValueChars를 따르고, 실패한 쓰기는 네이티브 field 값, 프로퍼티 재정의, 스크립트 상태, 인스턴스 순서를 복원합니다

직접 호출자는 xebdProperty를 쓰고 Attributes와 DefaultAttributes를 공급합니다. 후자는 새로 클론된 노드를 초기화합니다

프로퍼티 속성 액션은 TXFAEventAction.Value에 속성 이름, NUL 구분자, 값을 담습니다. TXFAWidgetRuntime은 이를 검증해 네이티브 프로퍼티 대상에 적용합니다

적용 범위

이벤트 트리에는 선언된 프로퍼티 노드와 유효 속성이 들어 있고, 지원되는 서식·위젯 클래스에는 스키마 기본값이 붙습니다. 부재 프로퍼티 생성은 이제 지원되는 서식 경로를 네이티브 form packet에 실체화합니다

event, calculate, validate 선언은 실행 메타데이터로 남습니다. variables 스크립트는 스크립트 객체로 남고, 일반 프로퍼티 편집은 메타데이터 스크립트를 활성화하지 않습니다

추가 스키마 프로퍼티 클래스, 범용 제거와 부모 재지정, 네임스페이스 한정 속성 변경, 추가 레이아웃 프로퍼티 소비자, 더 많은 리치 텍스트·위젯 편집 기능은 별도 과제로 계속됩니다

관련 API

라이브 SOM 해석, 네이티브 Data DOM, HPDFXFAResolveFormInstanceProperty, 인터랙티브 XFA 런타임