TXFADataStructure Class

HPDFXFADataStructure에서 선언되는 TXFADataStructure는 기존 네이티브 XFA Data DOM에 상한이 적용된 구조 편집을 유지하고, 그래프를 통해 만들거나 복제하거나 제거한 detached 요소 트리를 소유합니다

CreateDataNode은 Data DOM 요소를 담당하고, CreateElement는 TXFAFormStructure가 쓰는 모델 요소 구성도 지원합니다

생성자는 Root를 빌려 쓰고, 반환하기 전에 기존 트리를 TXFADataStructureLimits에 대조해 검증합니다. 그래프는 빌려 쓴 루트의 소유자보다 먼저 파괴되어야 합니다

모든 공개 AnsiString 이름, 네임스페이스 URI, 텍스트 값은 UTF-8 바이트를 담습니다

Graph := TXFADataStructure.Create(DatasetsRoot, Limits, OnTick);
try
  Graph.BeginOperation(OnTick);
  try
    Node := Graph.CreateDataNode('dataValue', 'amount');
    Graph.SetValue(Node, '42');
    Graph.Append(RecordNode, Node);
  finally
    Graph.EndOperation;
  end;
finally
  Graph.Free;
end;

작업 범위

BeginOperation(OnTick)은 범위를 시작하고 중첩된 범위는 거부합니다. EndOperation은 저장된 콜백을 해제하며 정리 중에도 안전합니다

생성자는 자기 preflight 범위를 실행하고 돌아가기 전에 생성자 콜백을 해제합니다. 이후 메서드는 새 활성 범위를 요구합니다

OnTick은 Delphi 익명 프로시저 또는 TXFADataStructureTick 타입의 FPC 중첩 프로시저입니다. 작업을 취소하거나 호출자 마감 시한이나 작업 카운터를 강제하기 위해 예외를 던질 수 있습니다

메서드는 최종 cancellation 검사와 구조 변경 전에 할당, 소유권 용량, 필요한 네임스페이스 선언을 준비합니다. 거부된 개별 편집은 기존 문서 그래프를 유지합니다

성공한 직접 그래프 호출의 연속이 뒤따르는 호출 실패로 자동 rollback되지는 않습니다. 스크립팅 런타임이 완전한 event 트랜잭션을 공급하고 문서, detached 그래프, 스크립트 identity, 어휘 상태, 저널을 함께 복원합니다

생성과 복제

CreateDataNode(ClassName, Name, NamespaceURI = '')는 dataGroup 또는 dataValue를 받아 새 detached 요소를 만들고 명시적 data-node 클래스 메타데이터를 기록합니다

CreateElement(ClassName, Name, NamespaceURI)는 XML 로컬 이름이 ClassName인 detached 모델 요소를 만들고, 선택적 XFA name 속성과 명시적 기본 네임스페이스 선언을 붙입니다

CreateElement는 XML 문법, scalar 값, 예약된 네임스페이스 URI, 그래프 용량을 검증합니다. 상위 form 팩토리가 지원되는 XFA 클래스 스키마를 검증합니다

Name은 XML 로컬 이름이거나 비어 있지 않은 접두사가 공급된 비어 있지 않은 네임스페이스 URI를 갖는 자격 이름일 수 있습니다. 예약된 xml과 xmlns 바인딩은 검증됩니다

빈 이름은 detached 구성 단계에서 허용됩니다. attach 전에 Rename으로 유효한 이름을 설정하십시오

Clone(Node, Recursive = True)는 새 네이티브 identity를 가진 detached 사본을 만듭니다. 얕은 사본은 자식 노드를 제외하면서 요소 자체의 값, 속성, 네임스페이스 선언은 유지합니다

상속된 네임스페이스 선언은 clone이나 이동 전에 실체화되어 접두사가 붙은 속성이 이전 조상 범위 밖에서도 원래 네임스페이스를 유지합니다

소유권 편집

Append(Parent, Node)는 같은 노드를 부모의 정렬된 자식 끝으로 옮깁니다. InsertBefore(Parent, Node, Before)는 기존 직접 자식 앞으로 옮기며, Before = nil은 append와 같습니다

Remove(Parent, Node)는 기존 직접 자식을 detach하고 소유권을 그래프에 넘깁니다. 객체, 자손, 네이티브 identity는 그래프 파괴나 detached 스냅샷 복원까지 유효합니다

외부 그래프, 사이클, 빌려 쓴 루트의 이동, 이름 없는 attach, 잘못된 형제 참조, 노드/깊이/바이트 초과는 EHPDFXFAError를 발생시킵니다

값과 이름 편집

Rename(Node, Name)은 접두사, 네임스페이스 URI, 위치, 자손, 네이티브 identity를 유지하면서 요소의 로컬 XML 이름을 바꿉니다. attach된 요소는 비어 있지 않은 유효한 XML 이름을 요구합니다

SetValue(Node, Value)는 UTF-8과 XML scalar 값을 검증하고, 일반 텍스트 자식을 교체하며, 주석과 processing instruction은 유지합니다. 빈 텍스트는 일반 텍스트 자식을 제거합니다

SetAttribute(Node, Name, Value)는 한정 이름 문법, UTF-8 값, 예상 바이트 예산을 검증한 뒤 속성을 더하거나 교체합니다. 빈 값은 명시적 빈 속성으로 남습니다

SetNamespace(Node, NamespaceURI)는 요소의 확장 네임스페이스를 바꾸고 현재 접두사의 선언을 갱신하며, 예약된 바인딩을 검증합니다

DeclareNamespace(Node, Prefix, NamespaceURI)는 요소의 확장 이름을 바꾸지 않고 네임스페이스 선언을 더하거나 교체합니다. 요소 자신의 접두사에 대한 충돌 선언은 거부합니다

그래프 직접 호출자는 접두사 속성과 그 네임스페이스 선언을 조율하고 복합 편집을 자기 롤백 트랜잭션 안에 둡니다

바이트와 노드 예산은 요소의 집계 값과 실제 소유한 텍스트 노드를 함께 셉니다. 텍스트 표현 하나만 청구하지 않습니다

XML import preflight

ValidateImport(Node, Incoming, Overwrite, OnTick)는 호출자가 소유한 입력 XML 자식 목록을 import하기 전에 예상되는 집계 그래프를 검사합니다

Overwrite가 true이면 예상 크기에서 대상의 교체될 자식과 집계 값을 제외합니다. 아니면 기존 자식이 예산에 남습니다

이 메서드는 입력 목록과 문서를 바꾸지 않으며, 활성 범위가 없을 때만 임시 작업 범위를 만듭니다

detached 스냅샷

CaptureDetached는 모든 detached 루트와 자손의 값 스냅샷을 반환합니다. 텍스트, CDATA, 주석, processing instruction, 속성, 네임스페이스 선언이 포함됩니다

RestoreDetached(Snapshot)는 소유권을 교체하기 전에 대체 detached 숲을 검증하고 준비합니다. 반환 노드 배열은 스냅샷 순서를 따르며 호출자 재매핑용 새 네이티브 identity를 담습니다

레코드 필드와 identity 규칙은 TXFADataStructureSnapshot을 참고하십시오

조회

Root는 빌려 쓴 루트를, DetachedRoots는 그래프가 소유한 루트를 조회용으로 노출합니다. 소유권과 예산의 일관성을 위해 변경은 그래프 메서드로 수행하십시오

트랜잭션 Data DOM 스크립팅 · 트랜잭션 form 트리 스크립팅 · TXFANode