TXFADataStructure Class

TXFADataStructure, HPDFXFADataStructure içinde bildirilmiştir; mevcut bir native XFA Data DOM'a sınırlı structural edit'ler sürdürür ve graf üzerinden oluşturulan, klonlanan veya kaldırılan ayrık element ağaçlarının ownership'ine sahiptir

CreateDataNode Data DOM öğelerine hizmet eder; CreateElement ayrıca TXFAFormStructure tarafından kullanılan model-öğe oluşturmasını da destekler

Constructor, Root'u ödünç alır ve döndürmeden önce mevcut ağacı TXFADataStructureLimits'a karşı doğrular; graf, ödünç alınan root'un sahibinden önce yok edilmelidir

Tüm public AnsiString adları, namespace URI'leri ve metin value'ları UTF-8 bayt içerir

Graph := TXFADataStructure.Create(DatasetsRoot, Limits, OnTick);
try
  Graph.BeginOperation(OnTick);
  try
    Node := Graph.CreateDataNode('dataValue', 'amount');
    Graph.SetValue(Node, '42');
    Graph.Append(RecordNode, Node);
  finally
    Graph.EndOperation;
  end;
finally
  Graph.Free;
end;

Operation kapsamı

BeginOperation(OnTick) bir scope başlatır ve iç-ice scope'u reddeder; EndOperation, saklanan callback'i serbest bırakır ve cleanup sırasında güvenlidir

Constructor kendi preflight scope'unu çalıştırır ve döndürmeden önce constructor callback'ini serbest bırakır; sonraki method'lar yeni bir aktif scope gerektirir

OnTick, TXFADataStructureTick türünde bir Delphi anonymous procedure veya bir FPC nested procedure'dür; işi iptal etmek veya bir çağıran deadline'ı veya operation sayacını uygulamak için raise edebilir

Method'lar, son cancellation check'leri ve structural mutation'dan önce tahsisleri, ownership kapasitesini ve zorunlu namespace bildirimlerini hazırlar; reddedilen tekil bir edit, mevcut belge grafiğini korur

Başarılı doğrudan graf çağrıları dizisi, sonraki bir çağrı başarısız olduğunda otomatik olarak geri alınmaz; scripting runtime, eksiksiz event transaction'ını sağlar ve belgesini, ayrık grafiğini, script identity'lerini, lexical state'i ve journal'ı birlikte geri alır

Oluşturma ve klonlama

CreateDataNode(ClassName, Name, NamespaceURI = ''), dataGroup veya dataValue kabul eder, taze bir ayrık element oluşturur ve açık data-node class metadata'sını kaydeder

Name, bir XML yerel adı veya boş-olmayan prefix'i sağlanan boş-olmayan namespace URI'ye sahip qualified bir ad olabilir; reserved xml ve xmlns binding'leri doğrulanır

Boş bir ad, ayrık bir inşa adımı için mümkündür; ekten önce Rename ile geçerli bir ad ayarlayın

Name bir XML yerel adı ya da boş olmayan öneki, verilen boş olmayan namespace URI'sine sahip nitelikli bir ad olabilir; rezerve xml ve xmlns bağları doğrulanır

Ayrık bir oluşturma adımı için boş ada izin verilir; eklenmeden önce Rename ile geçerli bir ad ayarlayın

Clone(Node, Recursive = True), taze native identity'lerle ayrık bir kopya oluşturur; shallow copy, element'in kendi value'sunu, attribute'larını ve namespace bildirimlerini tutarken child node'ları dışlar

Kalıtılan namespace bildirimleri, klon veya taşımadan önce gerçekleştirilir; böylece prefix'li attribute'lar, önceki ancestor scope'larının dışında orijinal namespace'lerini korur

Ownership edit'leri

Append(Parent, Node), aynı node'u parent'ın sıralı child'larının sonuna taşır; InsertBefore(Parent, Node, Before), onu mevcut bir doğrudan child'dan önceye taşır — Before = nil append'e eşdeğerdir

Remove(Parent, Node), mevcut doğrudan child'ı ayırır ve ownership'ini grafe devreder; object, descendant'lar ve native identity'ler graf yok edilene veya ayrık snapshot restoration'a kadar geçerli kalır

Yabancı graf'lar, cycle'lar, ödünç alınan root'u taşımak, adsız ek, geçersiz sibling referansları ve node/depth/byte taşması EHPDFXFAError raise eder

Value ve ad edit'leri

Rename(Node, Name), element'in yerel XML adını değiştirirken prefix'ini, namespace URI'sini, konumunu, descendant'larını ve native identity'sini korur; eklenmiş bir element boş-olmayan geçerli bir XML adı gerektirir

SetValue(Node, Value), UTF-8 ve XML scalar value'larını doğrular, sıradan text child'ları değiştirir ve comment'leri ve processing instruction'ları korur; boş metin sıradan text child'ları kaldırır

SetAttribute(Node, Name, Value), nitelikli-ad söz dizimini, UTF-8 değerini ve öngörülen bayt bütçesini doğruladıktan sonra bir öznitelik ekler ya da değiştirir; boş değer açık boş öznitelik olarak kalır

SetNamespace(Node, NamespaceURI), öğenin genişletilmiş namespace'ini değiştirir ve geçerli öneki için bildirimi günceller; rezerve bağları doğrularken

DeclareNamespace(Node, Prefix, NamespaceURI), öğenin genişletilmiş adını değiştirmeden bir namespace bildirimi ekler ya da değiştirir; öğenin kendi öneki için çelişen bir bildirimi reddeder

Doğrudan graph çağıranları, önekli öznitelikleri namespace bildirimleriyle koordine eder ve bileşik düzenlemeleri kendi rollback işlemleri içinde tutar

Byte ve node bütçeleri, element'in toplam value'sunu ve gerçek owned text node'unu içerir — metnin yalnızca tek bir temsilini ücretlendirmek yerine

XML import preflight

ValidateImport(Node, Incoming, Overwrite, OnTick), bir çağıran owned bir gelen XML child listesi import etmeden önce projeklenen toplam grafiği denetler

Overwrite true iken, projeklenen boyut, hedefin replaced child'larını ve toplam value'sunu dışlar; aksi hâlde mevcut child'lar bütçede kalır

Method, gelen listeyi ve belgeyi değiştirmeden bırakır ve geçici bir operation scope'u yalnızca hiçbir scope aktif değilken oluşturur

Ayrık snapshot'lar

CaptureDetached, her ayrık root ve descendant'ın — metin, CDATA, comment'ler, processing instruction'lar, attribute'lar ve namespace bildirimleri dâhil — value snapshot'ını döndürür

RestoreDetached(Snapshot), ownership'i takas etmeden önce bir replacement ayrık ormanı doğrular ve hazırlar; döndürdüğü node array'i snapshot sırasını izler ve çağıran remapping'i için taze native identity'ler içerir

Record alanları ve identity kuralları için bkz. TXFADataStructureSnapshot

İnceleme

Root, ödünç alınan root'u ve DetachedRoots, graf-owned root'ları inceleme için açığa çıkarır; değişiklikler için graf method'larını kullanın — böylece ownership ve bütçeler tutarlı kalır

Transactional Data DOM scripting · TXFANode