صنف TXFADataStructure

TXFADataStructure المعلنة في HPDFXFADataStructure تحفظ تعديلات بنيوية محدودة السقف على Data DOM أصلي قائم في XFA وتمتلك أي أشجار عناصر منفصلة أنشأها الرسم البياني أو استنسخها أو أزالها عبره

CreateDataNode تخدم عناصر Data DOM، بينما تدعم CreateElement أيضًا بناء عناصر النموذج المستخدم بواسطة TXFAFormStructure

المُنشئ يستعير Root ويتحقق من الشجرة القائمة مقابل TXFADataStructureLimits قبل العودة؛ ويجب إهلاك الرسم البياني قبل مالك الجذر المستعار

كل الأسماء وURIs لـ namespace وقيم النص العامة بـ AnsiString تحتوي بايتات UTF-8

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;

نطاق العملية

BeginOperation(OnTick) تبدأ نطاقًا وترفض نطاقًا متداخلًا؛ وEndOperation تحرر callback المخزنة وهي آمنة أثناء التنظيف

المُنشئ يشغّل نطاق preflight خاصًا به ويحرر callback المُنشئ قبل العودة؛ والأساليب اللاحقة تتطلب نطاقًا نشطًا جديدًا

OnTick إجراء مجهول في Delphi أو إجراء متداخل في FPC من نوع TXFADataStructureTick؛ ويمكنها الإلقاء لإلغاء العمل أو فرض موعد نهائي أو عدّاد عمليات للمستدعي

الأساليب تهيئ التخصيصات وسعة الملكية وإعلانات namespace الإلزامية قبل فحص الإلغاء النهائي والتحويل البنيوي؛ والتعديل الفردي المرفوض يحفظ الرسم البياني الحالي للمستند

سلسلة استدعاءات رسم بياني مباشرة ناجحة لا تتراجع تلقائيًا عندما يفشل استدعاء لاحق؛ وبيئة تشغيل السكربتات تزوّد معاملة الحدث الكاملة وتستعيد مستندَها ورسمَها المنفصل وهويَات السكربت وحالتها المعجمية وسجلَّها معًا

الإنشاء والاستنساخ

CreateDataNode(ClassName, Name, NamespaceURI = '') تقبل dataGroup أو dataValue وتنشئ عنصرًا منفصلًا طازجًا وتسجّل metadata صنف عقدة البيانات الصريحة

Name قد تكون اسمًا محليًا لـ XML أو اسمًا مؤهلًا بادئتَه غير فارغة لها URI namespace غير فارغ مقدَّم؛ وارتباطا xml وxmlns المحجوزان يُتحقق منهما

الاسم الفارغ مسموح لخطوة بناء منفصلة؛ اضبط اسمًا صالحًا بـ Rename قبل الإرفاق

قد يكون Name اسم XML محليًا أو اسمًا مؤهلًا بادئته غير الفارغ يملك URI namespace غير فارغ مقدمًا؛ وارتباطا xml وxmlns المحجوزان تُتحقق صحتهما

يُسمح باسم فارغ لخطوة بناء منفصلة؛ واضبط اسمًا صالحًا بـ Rename قبل الإرفاق

Clone(Node, Recursive = True) تنشئ نسخة منفصلة بهويات أصلية طازجة؛ والنسخة الضحلة تحفظ قيمة العنصر وسماته وإعلانات namespace الخاصة به بينما تستثني العقد الأبناء

إعلانات namespace الموروثة تجسد قبل الاستنساخ أو النقل كي تحفظ السمات ذات البادئات namespace الأصلي خارج نطاق ancestor السابق لديها

تعديلات الملكية

Append(Parent, Node) تنقل نفس العقدة إلى نهاية أبناء الوالد المرتبين؛ وInsertBefore(Parent, Node, Before) تنقلها قبل ابن مباشر قائم، مع Before = nil مكافئًا للإلحاق

Remove(Parent, Node) تفصل الابن المباشر القائم وتنقل ملكيته إلى الرسم البياني؛ والكائن والأحفاد والهويات الأصلية تبقى صالحة حتى إهلاك الرسم البياني أو استعادة snapshot منفصل

الرسوم الأجنبية والحلقات ونقل الجذر المستعار والإرفاق بلا اسم ومراجع الأشقاء غير الصالحة وتجاوز سقف العقد/العمق/البايتات تثير EHPDFXFAError

تعديلات القيم والأسماء

Rename(Node, Name) تغيّر اسم XML المحلي للعنصر مع حفظ بادئته وURI namespace وموضعه وأحفاده وهويته الأصلية؛ والعنصر المرفق يتطلب اسم XML صالحًا غير فارغ

SetValue(Node, Value) تتحقق من قيم UTF-8 وXML الـ scalar وتستبدل أبناء النص العاديين وتحفظ التعليقات وتعليمات المعالجة؛ والنص الفارغ يزيل أبناء النص العاديين

SetAttribute(Node, Name, Value) تضيف سمة أو تستبدلها بعد التحقق من صيغة اسمها المؤهل وقيمتها UTF-8 وميزانية بايتاتها المتوقعة؛ والقيمة الفارغة تبقى سمة فارغة صريحة

SetNamespace(Node, NamespaceURI) تغيّر namespace العنصر الموسَّع وتحدّث الإعلان لبادئته الحالية، مع التحقق من الارتباطات المحجوزة

DeclareNamespace(Node, Prefix, NamespaceURI) تضيف إعلان namespace أو تستبدله دون تغيير الاسم الموسَّع للعنصر؛ وترفض إعلانًا متضاربًا لبادئة العنصر الخاصة

منادو الرسم البياني المباشرون ينظمون السمات ذات البادئات مع إعلانات namespace الخاصة بها ويُبقون التحريرات المركبة داخل معاملة rollback خاصة بهم

ميزانيتا البايتات والعقد تتضمان القيمة التجميعية للعنصر وعقدة نصه المملوكة الفعلية، بدلًا من احتساب تمثيل واحد فقط للنص

preflight استيراد XML

ValidateImport(Node, Incoming, Overwrite, OnTick) تفحص الرسم البياني التجميعي المتوقع قبل أن يستورد المستدعي قائمة مملوكة من أبناء XML واردة

عندما تكون Overwrite بقيمة true، يستثني الحجم المتوقع الأبناء المستبدلين للهدف وقيمته التجميعية؛ وإلا تبقى الأبناء القائمة في الميزانية

الطريقة تترك القائمة الواردة والمستند دون تغيير وتنشئ نطاق عملية مؤقتًا فقط عندما لا يكون هناك نطاق نشط مسبقًا

snapshots المنفصلة

CaptureDetached تعيد snapshot قيمة لكل جذر منفصل وحفيد، بما يشمل النص وCDATA والتعليقات وتعليمات المعالجة والسمات وإعلانات namespace

RestoreDetached(Snapshot) تتحقق وتجهّز غابة منفصلة بديلة قبل مبادلة الملكية؛ ومصفوفة عقد المعادة تتبع ترتيب snapshot وتحتوي هويات أصلية طازجة لإعادة تخطيط المستدعي

انظر TXFADataStructureSnapshot لحقول السجل وقواعد الهوية

الفحص

Root تكشف الجذر المستعار وDetachedRoots تكشف الجذور المملوكة للرسم البياني للفحص؛ استخدم أساليب الرسم البياني للتغييرات كي تبقى الملكية والميزانيات متسقتين

برمجة Data DOM الأصلية في XFA · TXFANode