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