Coleções de nós de consultas do XFA
Eventos JavaScript e FormCalc podem inspecionar ocorrências de nós no escopo e reter listas de consultas independentes entre eventos do runtime
const siblings = xfa.record.amount.all;
const retained = siblings.clone();
retained.remove(retained.item(0));
retained.insert(siblings.item(0), null);
retained.item(0).rawValue = "42";
Propriedades de ocorrências
node.all retorna uma lista de consultas ordenada e fresca de nós no escopo com o mesmo nome literal; um nó sem nome usa o nome da classe dele em vez disso
node.classAll retorna uma lista de consultas ordenada e fresca de nós no escopo com a mesma classe, incluindo nós com outros nomes
node.index e node.classIndex retornam a ocorrência com base zero dentro dos escopos respectivos
Containers sem nome que não são propriedades são transparentes ao lookup de escopos nomeados, incluindo ocorrências SOM relativas positivas e negativas; containers de propriedades retêm o próprio escopo deles
Nomes literais como #field, * e nomes Unicode são comparados como nomes autorados por essas propriedades
Operações de listas independentes
| Membro | Comportamento |
|---|---|
length | Contagem atual de entradas da lista |
item(index) | Nó referenciado, ou null para índice negativo, não inteiro ou fora da faixa |
namedItem(name) | Primeiro nó referenciado com aquele nome literal, ou null quando nenhum nó corresponde |
clone() | Novo armazenamento independente de entradas que referencia os mesmos nós |
append(node) | Adiciona a mesma referência viva de nó no fim, incluindo uma referência duplicada |
insert(node, before) | Insere uma referência viva de nó antes da primeira referência correspondente; null anexa |
remove(node) | Remove a primeira referência correspondente; uma referência ausente dispara um erro |
Listas retornadas por resolveNodes, all e classAll usam armazenamento independente de entradas; mudar esse armazenamento deixa as trees de formulários e dados no lugar, enquanto escrever num nó referenciado muda o nó real
Coleções node.nodes de formulários e propriedades expõem views vivas de filhos; os métodos clone() delas retornam listas de consultas independentes, como descrito em Coleções vivas de filhos do XFA
node.nodes do Data DOM também fornece um clone() independente; os métodos existentes append, insert e remove dele retêm seu comportamento estrutural nativo, como descrito em Estrutura transacional do Data DOM do XFA
Iteração de arrays, leituras indexadas e enumeração expõem os nós referenciados; atribuição direta, deleção, redefinição de propriedades, mudanças de prototype e impedir extensões disparam erros antes de mudar a lista de consultas
Persistência e identidades estáveis
Objetos de scripts podem reter uma lista de consultas ou clone entre eventos; cada operação usa o resolver atual de eventos e os limites transacionais
Handles retidos de instance managers roteiam operações ao grafo atual de eventos quando retidos ou clonados entre eventos
Renomear ou reordenar um nó sobrevivente mantém a identidade da lista retida dele; remover uma instância repetida de formulário faz as leituras e escritas através daquela referência removida falharem, em vez de selecionar uma instância de substituição
Uma lista independente pode clonar as referências armazenadas dela e remover uma referência previamente retida de um nó removido sem desreferenciar aquele nó
O armazenamento de listas de consultas é estado de scripts do runtime; salvar o XDP persiste os valores e a estrutura nativos dos nós, enquanto um runtime novo inicia uma nova sessão de objetos de scripts
Transações e limites
Nós inválidos e referências de participação falham antes de aquila operação de lista mutar o armazenamento; um erro capturado deixa as operações válidas anteriores do mesmo evento disponíveis
Um erro de evento não capturado, orçamento de operações ou falha de tempo decorrido restaura juntos as mutações de listas de consultas, valores nativos, instâncias repetidas, estado retido de objetos de scripts e estado do journal, permitindo que o mesmo runtime tente de novo
TXFAFormScriptLimits.MaxArrayItems delimita cada comprimento retido de listas e delimita separadamente os objetos cumulativos de listas e as entradas recém-alocadas durante um evento; sua configuração zero usa o default de contexto de eventos de 65.536
Clones vazios consomem o orçamento de objetos, clones não vazios também consomem o orçamento de entradas, e listas retidas permanecem delimitadas entre eventos bem-sucedidos separados
FormCalc e consumo de PDF
output = Concat(Sum(xfa.datasets.data.main.amount.all), ":",
xfa.datasets.data.main.amount.all.length, ":",
xfa.datasets.data.main.amount[1].classIndex)
A seleção de ocorrências FormCalc em paths literais de xfa.form, xfa.datasets e xfa.record usa a resolução SOM nativa; indexação de listas após uma propriedade de coleção indexa aquela coleção
Salve os bytes do runtime em XDP e passe-os a HPDFXFAWriteHeadlessPDF para gerar campos e aparências nativos reais a partir dos valores commitados, incluindo edições através de referências retidas sobreviventes de instâncias repetidas
TXFAHeadlessPDFOptions.Editable = False cria campos nativos read-only com aparências, em vez de achatá-los
Cobertura
Esta interface fornece listas de consultas independentes e metadados de ocorrências; criação e clonagem gerais de nós de templates/formulários, scripting adicional de classes de nós, validação de schema e mídia externa permanecem trabalho separado