Estrutura transacional do Data DOM do XFA

Eventos JavaScript podem criar, clonar, renomear, anexar, reordenar e desanexar elementos nativos do Data DOM, com leituras imediatas de scripts e persistência nativa de toda a transação

const record = xfa.record;
const value = xfa.datasets.createNode("dataValue");
value.name = "amount";
value.value = "42";
record.nodes.append(value);
const retained = value.clone(false);
record.nodes.remove(value);
record.nodes.insert(value, record.nodes.item(0));

Operações suportadas

xfa.datasets.createNode(className, name = "", namespace = "") cria um dataGroup ou dataValue não anexado; nomes qualificados exigem um namespace URI não vazio

node.clone(recursive = true) cria uma cópia não anexada do Data DOM com identidades frescas; false exclui nós filhos, retendo os metadados e o valor do próprio elemento

node.name é gravável para elementos do Data DOM e preserva namespace, ordem de irmãos, descendentes e aliases retidos; uma construção sem nome precisa receber um nome local válido antes da anexação

node.nodes.length, item(index) e namedItem(name) leem os filhos elementos ordenados vivos; item e namedItem retornam null quando nenhum filho corresponde

nodes.append(node) e nodes.insert(node, before) transferem o mesmo objeto para os filhos do dono; insert(node, null) anexa

nodes.remove(node) desanexa um filho direto, mantendo seu objeto e subtree disponíveis para aliases retidos e reanexação posterior

xfa.record retorna o primeiro record atual sob a raiz de dados do Data DOM e é atualizado após edições estruturais

Identidade, XML e bindings

Um objeto de script pode reter um nó, descendente ou coleção dona de filhos entre eventos; aliases vivos resolvem os mesmos objetos nativos depois de anexação, desanexação, rename e rollback

loadXML e saveXML funcionam em elementos recém-criados e movidos, incluindo descendentes importados e depois movidos durante o mesmo evento

Identidades nativas estáveis impedem que aliases de descendentes importados resolvam silenciosamente um filho diferente após mudanças posicionais

Namespaces de atributos herdados, resets explícitos de namespace default vazio, comentários, processing instructions, CDATA e valores Unicode sobrevivem a clone, move, save e reload

Bindings de formulários são atualizados após mudanças estruturais, e valores escritos através de nós de dados recém-anexados chegam à instância repetida correspondente de formulário sem alterar outra instância

Transações e limites

Classes inválidas, nomes XML, referências de irmãos, ciclos e nós estrangeiros falham antes que aquela operação individual mude o grafo vivo de scripts

Um erro de script não capturado, falha de apply nativo, cancelamento, teto de operações ou limite de tempo decorrido restaura o evento completo, incluindo nós anexados e desanexados, valores de bindings, aliases retidos, estado lexical de objetos de script e estado do journal; o mesmo runtime pode então tentar de novo

Nós estruturais e árvores desanexadas compartilham tetos nativos de nós, profundidade e bytes UTF-8; o deadline original da transação de scripts se aplica a mudanças JavaScript e nativas juntas

Consumo de PDF

Salve o runtime em XDP e passe esses bytes para HPDFXFAWriteHeadlessPDF para criar campos e aparências nativas reais de PDF a partir dos bindings de dados alterados

TXFAHeadlessPDFOptions.Editable = False cria campos nativos read-only com aparências; essa configuração não os achata

Cobertura atual

Esta página descreve edições do Data DOM; o scripting transacional da tree de formulários fornece criação viva suportada de formulários, clonagem, inserção, remoção e consumo nativo de PDF

Edição geral de templates, processamento completo de subform-sets de choice e o schema completo de classes de nós do XFA permanecem capabilities separadas

Coleções independentes de nós de consultas · API nativa de grafos estruturais · Runtime de widgets XFA