Coleções de nós de consultas XFA
Eventos JavaScript e FormCalc podem inspecionar ocorrências de nós em âmbito e reter listas independentes de consultas através de eventos de runtimes
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 devolve uma lista fresca ordenada de consultas de nós em âmbito com o mesmo nome literal; um nó sem nome usa o nome da classe dele em vez disso
node.classAll devolve uma lista fresca ordenada de consultas de nós em âmbito com a mesma classe, incluindo nós com outros nomes
node.index e node.classIndex devolvem a ocorrência com base zero dentro dos respetivos âmbitos
Contentores sem nome que não sejam de propriedades são transparentes para consultas de âmbitos nomeados, incluindo ocorrências SOM relativas positivas e negativas; contentores de propriedades mantêm o âmbito próprio deles
Nomes literais como #field, * e nomes Unicode são correspondidos como nomes escritos por estas propriedades
Operações independentes de listas
| Membro | Comportamento |
|---|---|
length | Contagem atual de entradas da lista |
item(index) | Nó referenciado, ou null para um índice negativo, não inteiro ou fora do intervalo |
namedItem(name) | Primeiro nó referenciado com esse nome literal, ou null quando nenhum nó corresponde |
clone() | Novo armazenamento independente de entradas referindo os mesmos nós |
append(node) | Acrescenta a mesma referência viva de nós no fim, incluindo uma referência duplicada |
insert(node, before) | Insere uma referência viva de nós antes da primeira referência correspondente; null acrescenta |
remove(node) | Remove a primeira referência correspondente; uma referência ausente levanta um erro |
Listas devolvidas por resolveNodes, all e classAll usam armazenamento independente de entradas; alterar esse armazenamento deixa as árvores de formulários e de dados no lugar, enquanto escrever num nó referenciado altera o nó real
Coleções node.nodes de formulários e de propriedades expõem vistas vivas de filhos; os métodos clone() delas devolvem listas independentes de consultas, como descrito nas coleções vivas de filhos XFA
node.nodes do Data DOM também fornece um clone() independente; os métodos existentes dele de append, insert e remove mantêm o comportamento estrutural nativo deles, como descrito na estrutura transacional do Data DOM XFA
Iteração de arrays, leituras indexadas e enumeração expõem nós referenciados; atribuição direta, eliminação, redefinição de propriedades, alterações de prototypes e impedir extensões levantam erros antes de alterar a lista de consultas
Persistência e identidades estáveis
Objetos de scripts podem reter uma lista de consultas ou um clone através de eventos; cada operação usa o resolver atual de eventos e os limites transacionais
Handles consultados de gestores de instâncias encaminham operações para o grafo atual de eventos quando retidos ou clonados através de eventos
Renomear ou reordenar um nó sobrevivente mantém a identidade de lista retida dele; remover uma instância repetida de formulários faz leituras e escritas através dessa referência removida falharem em vez de selecionar uma instância de substituição
Uma lista independente pode clonar as referências guardadas dela e remover uma referência retida anterior de um nó removido sem desreferenciar esse nó
O armazenamento de listas de consultas é estado de scripts do runtime; gravar XDP persiste os valores e a estrutura nativos de 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 pertenças falham antes de essa operação de listas mutar o armazenamento; um erro apanhado deixa operações válidas anteriores no mesmo evento disponíveis
Um erro de eventos não apanhado, orçamento de operações ou falha de tempo decorrido restaura em conjunto 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 repita
TXFAFormScriptLimits.MaxArrayItems delimita cada comprimento retido de listas e delimita separadamente objetos cumulativos de listas e entradas recém-alocadas durante um evento; a definição zero dele usa o default de 65,536 do contexto de eventos
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 através de eventos bem-sucedidos separados
Consumo FormCalc e 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 caminhos literais de xfa.form, xfa.datasets e xfa.record usa resolução SOM nativa; indexação de listas após uma propriedade de coleções indexa essa coleção
Grave bytes de runtimes em XDP e passe-os a HPDFXFAWriteHeadlessPDF para gerar campos e aparências nativas reais a partir dos valores confirmados, incluindo edições através de referências retidas sobreviventes de instâncias repetidas
TXFAHeadlessPDFOptions.Editable = False cria campos nativos só de leitura com aparências, em vez de achatá-los
Cobertura
Esta interface fornece listas independentes de consultas 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 schemas e media externa continuam a ser trabalho separado