Estrutura transacional do Data DOM XFA
Eventos JavaScript podem criar, clonar, renomear, anexar, reordenar e destacar 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 URI de namespace 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 mantendo 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 tem de receber um nome local válido antes da anexação
node.nodes.length, item(index) e namedItem(name) leem os filhos vivos ordenados de elementos; item e namedItem devolvem null quando nenhum filho corresponde
nodes.append(node) e nodes.insert(node, before) transferem o mesmo objeto para os filhos do proprietário; insert(node, null) acrescenta
nodes.remove(node) destaca um filho direto mantendo o objeto dele e a subárvore dele disponíveis para aliases retidos e reanexação posterior
xfa.record devolve o primeiro registo atual sob a raiz de dados do Data DOM e atualiza-se após edições estruturais
Identidades, XML e bindings
Um objeto de script pode reter um nó, um descendente ou a coleção proprietária de filhos através de eventos; aliases vivos resolvem os mesmos objetos nativos após anexação, destaque, renomeação 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 importados de descendentes resolvam silenciosamente um filho diferente após alterações posicionais
Namespaces herdados de atributos, resets explícitos de namespaces default vazios, comentários, processing instructions, CDATA e valores Unicode sobrevivem a clone, movimento, gravação e recarregamento
Bindings de formulários atualizam-se após alterações estruturais, e valores escritos através de nós de dados recém-anexados chegam à instância repetida correspondente de formulários sem alterar outra instância
Transações e limites
Classes inválidas, XML names, referências de irmãos, ciclos e nós estrangeiros falham antes de essa operação individual alterar o grafo vivo de scripts
Um erro de scripts não apanhado, falha nativa de aplicações, cancelamento, teto de operações ou limite de tempo decorrido restaura o evento completo, incluindo nós anexados e destacados, valores de bindings, aliases retidos, estado lexical de objetos de scripts e estado do journal; o mesmo runtime pode então repetir
Nós estruturais e árvores destacadas partilham tetos nativos de nós, profundidade e bytes UTF-8; o prazo original da transação de scripts aplica-se a JavaScript e a alterações nativas em conjunto
Consumo de PDFs
Grave o runtime em XDP e passe esses bytes a HPDFXFAWriteHeadlessPDF para criar campos e aparências nativas reais de PDFs a partir dos bindings alterados de dados
TXFAHeadlessPDFOptions.Editable = False cria campos nativos só de leitura com aparências; essa definição não os achata
Cobertura atual
Esta página descreve edições do Data DOM; o scripting transacional de árvores de formulários fornece criação viva suportada de formulários, clonagem, inserção, remoção e consumo nativo de PDFs
Edição geral de templates, processamento completo de subform-sets de escolhas e o schema completo de classes de nós XFA continuam a ser capacidades separadas
Coleções independentes de nós de consultas · API nativa de grafos estruturais · Runtime de widgets XFA