Resolução viva de caminhos SOM XFA

A execução geral com EnableJavaScript fornece o mesmo resolver vivo de formulários a resolveNode/resolveNodes ao nível de nós, xfa.resolveNode/xfa.resolveNodes e acessores FormCalc

A resolução segue as ocorrências repetidas atuais imediatamente após inserção, remoção ou movimento de instâncias; transações de runtimes bem-sucedidas persistem escritas selecionadas de campos nos alvos nativos de dados delas e no XDP guardado

Caminhos e ocorrências

CaminhoSeleção
row[1].cellA segunda linha e a célula selecionada dela
row[*].cellA célula selecionada em todas as linhas
$form.main.row.cellA primeira linha e a primeira célula através de um caminho absoluto
row[-1].cellA linha que precede a ocorrência inferida
row[+1].cellA linha que segue a ocorrência inferida
main..cell[*]Células irmãs correspondentes no primeiro ramo descendente
main.*Todos os filhos diretos pela ordem do documento
main.#field[name='target']Campos selecionados por um predicado de propriedades de nomes
main.#subform[*].#fieldO campo selecionado sob cada subform, correspondendo nomes de classes
main.part\.nameUm caminho de resolver JavaScript contendo um ponto com escape num nome de nós

Um índice omitido seleciona uma ocorrência; um caminho absoluto usa a ocorrência zero, enquanto um caminho com âmbito toma emprestado o índice correspondente de ancestrais ou de contentores quando as estruturas têm irmãos repetidos

A inferência de índices segue níveis correspondentes de hierarquias mesmo quando nós fonte e de destino têm nomes diferentes; seletores de classes tomam emprestado o índice correspondente de ocorrências de classes

Um alvo de ocorrência única é selecionado sem exigir o índice de ocorrências de quem chama; uma ocorrência inferida em falta devolve uma lista vazia ou null em vez de selecionar silenciosamente outro âmbito

Índices relativos são offsets a partir da ocorrência inferida sem adornos e são inválidos em caminhos absolutos; expressões FormCalc de índices podem calcular uma ocorrência em runtime

Contentores sem nome são transparentes para consultas de filhos nomeados; qualificação de pais e propriedades suportadas como rawValue, name, className, index, presence e access estão disponíveis, e exportações lexicais de objetos de scripts podem ser resolvidas e atribuídas através de caminhos FormCalc

Condições

const rows = xfa.resolveNodes("main.row[*].(Number(this.cell.rawValue)>15)");
const selected = xfa.resolveNodes("main.row[*].[cell ge 20].cell");

target = Sum($.resolveNodes("row.[cell ge 20].cell"))
row[1].cell = 25
var p = Ref(row[1].cell)
p = 30

Predicados JavaScript usam .(expression) e executam com o candidato como this; predicados FormCalc usam .[expression] e resolvem campos relativos contra esse candidato

Um predicado seleciona irmãos correspondentes mesmo quando [*] é omitido; predicados JavaScript também resolvem nomes simples de campos no âmbito do candidato, e caminhos de predicados em fontes FormCalc têm de ser passados como strings de resolver entre aspas

A consulta de descendentes pesquisa pela ordem do documento por um ramo que satisfaça as restantes componentes do caminho; um ramo sem sufixo correspondente não esconde uma correspondência completa posterior

Um índice de ocorrências é local ao grupo correspondente de irmãos dele; um índice fora do intervalo termina essa pesquisa de descendentes, pelo que main..cell[1] não seleciona uma célula noutra linha quando a primeira linha tem apenas uma célula

Um wildcard precedente avalia a consulta de descendentes de forma independente para cada contexto selecionado, e um wildcard diretamente após uma raiz absoluta seleciona os filhos da raiz

Predicados JavaScript recebem os objetos xfa e event do evento atual; consulta relativa a candidatos, exceções de predicados e escritas nativas partilham a transação envolvente

Eval aninhado herda o candidato do predicado, usa variáveis e funções isoladas de cálculos e partilha respostas nativas de compilações e replay transacional com o evento envolvente

Exists(missing) e um acessor a uma ocorrência indexada inexistente devolvem 0 através de Exists; o uso ordinário de um objeto FormCalc não resolvido levanta um erro

Orçamentos e migração

Caminhos permitem no máximo 128 componentes e 65,536 unidades de código UTF-16; os índices têm de ser inteiros seguros, e travessia, predicados, compilação dinâmica e operações de instâncias partilham os orçamentos de execução de eventos

Erros de parsers, exceções de predicados e orçamentos excedidos abortam o evento e restauram valores nativos de campos, ordem de instâncias e estado de scripts através de TXFAWidgetRuntime

resolveNodes geral anterior expandia índices omitidos através de todos os ancestrais repetidos; use main.row[*].cell[*] quando todas as linhas e todas as células forem pretendidas, substituindo main.row.cell[*]

Cobertura

O resolver opera sobre objetos vivos de formulários fornecidos pelos bindings de eventos, incluindo campos, subforms, draws, grupos de exclusão, areas e objetos de scripts, o Data DOM nativo exposto através de $data e $record, e nós declarados de propriedades de templates com atributos efetivos

Escapes de nomes JavaScript são suportados por strings de resolvers; identificadores de fontes FormCalc mantêm a gramática de identificadores do compilador

APIs relacionadas

HPDFXFACompileFormCalcEvent, HPDFXFAExecuteJavaScriptEvent, Eval dinâmico, Referências FormCalc e Runtime XFA interativo