XML nativo de exData no XFA

O event host geral cria propriedades de valores exData ausentes e importa filhos reais de XML estrangeiro nas ocorrências nativas de formulários deles; conteúdo de draws XHTML chega ao consumer de rich text do PDF depois da persistência e do reload nativos do XDP

Importando e lendo XML

const content = row.label.value.exData;
content.contentType = "text/html";
content.loadXML(
  '<body xmlns="http://www.w3.org/1999/xhtml">' +
  '<p><span style="font-size:18pt;color:#0000FF">Changed</span></p>' +
  '</body>',
  false,
  true
);
const currentXML = content.saveXML();
const readableXML = content.saveXML("pretty");

loadXML(source, ignoreRoot=true, overwrite=false) aceita uma string de documento XML bem formado e retorna undefined; ignoreRoot anexa os filhos da raiz agregadora, enquanto false anexa a própria raiz

Overwrite substitui o conteúdo existente antes do import; o default false dele anexa conteúdo na ordem do documento, preservando filhos importados anteriormente

saveXML() retorna o elemento exData atual e seu conteúdo como uma declaração XML UTF-8 e string de fragmento; o literal opcional pretty indenta conteúdo somente de elementos, preservando mixed text e whitespace de CDATA

Nomes de elementos importados, declarações de namespaces, atributos qualificados por namespaces, Unicode literal, referências de caracteres, mixed text e CDATA permanecem XML nativo; a markup não é armazenada como uma string plain rawValue

Criação e defaults

Propriedades de valores permitem um filho exData, mutuamente exclusivo com as outras escolhas de valores; um valor de draw e um filho exData ausentes podem ser criados e importados durante o mesmo evento

exData tem default maxLength=-1 e transferEncoding=none, com atributos contentType, href, id, name, rid, use e usehref vazios

O event host não expõe um accessor de valor escalar em exData; use loadXML e saveXML para conteúdo XML estrangeiro

Leituras imediatas, identidade e transações

Uma operação pura de XML nativo valida e serializa cada requisição antes de a execução do script continuar; XML malformado lança erro dentro do script e pode ser tratado por try/catch sem mudar o conteúdo atual

O replay determinístico de respostas compartilha a transação existente de scripts e não executa side effects de UI, arquivos, rede nem transporte

Chamadas subsequentes de saveXML veem imports anteriores bem-sucedidos e os atributos exData atuais durante o mesmo evento; referências retidas resolvem a identidade atual do nó em eventos posteriores

Apenas a ocorrência repetida alvo recebe o conteúdo nativo, e uma ocorrência nova inicializa a partir do XML do template, em vez de copiar o override importado de uma ocorrência existente

Uma raiz importada vazia com overwrite=true limpa o conteúdo real e permanece vazia após persistência e reload; ela não reverte ao conteúdo do template

Erros de script não tratados e falhas nativas de publicação restauram os bytes exatos do XDP nativo, incluindo escritas anteriores comuns de campos e mutações de XML

Orçamentos e consumo salvo

Os limites de scripts delimitam os bytes de entrada e saída XML, nós nativos de elementos e texto, profundidade, operações, tempo decorrido e respostas de replay; o MaxValueChars do widget também delimita o valor XML publicado

A ponte FPC preserva bytes UTF-8 através das respostas XML e valores comuns de actions, incluindo caracteres acentuados e Unicode suplementar

Conteúdo de draws XHTML salvo usa o comportamento existente do consumer de rich text de fontes, tamanho, cor e CSS inline; readers independentes de PDF verificam texto da primeira instância, estilos de substituição, conteúdo de instâncias novas e limpeza explícita

Alvos restantes de integração XML

Esta entrega implementa operações de conteúdo exData; os demais métodos loadXML/saveXML de nodeclasses, import estrutural de Data DOM e mutação geral de nós estrangeiros permanecem alvos separados

Declarações DTD e catálogos customizados de entidades permanecem não implementados; entidades predefinidas e referências de caracteres decimais ou hexadecimais são suportadas

Comentários e processing instructions dentro de elementos permanecem nativos através de import, leituras imediatas, save, reload e rollback; markup de nível de documento fora da raiz e round trips lexicais completos de XML permanecem alvos separados

Resolução de hrefs externos, transfers exData codificados, aplicação de maxLength, consumers de mídia estrangeira e aparências rich Unicode de widgets permanecem alvos de implementação separados

Referências e APIs relacionadas

As semânticas de import de raiz e substituição seguem a API Element do XFA da Adobe; nomes, referências e whitespace XML seguem o XML 1.0

Veja TXFAEventBinding, TXFAEventActionKind, Propriedades de rich text e Runtime XFA interativo