internet pencereler Android
Genişletmek

Delphi ortamında XML kullanarak. XML Belgesi Nesne Modelini Kullanma Delphi Xe Flap'ta XML Oluşturma

Hoşgeldiniz! Bu blog internete ve bilgisayarlara ayrılmıştır ve daha kesin olarak onlara kendilerine adanmışlardır.

Muhtemelen, yıllarca yıllarca yıllarca görünmediği görülüyor. Evet, bu çoğu blogun kaderi. Bu proje hırslı bir taahhüdeyken ve yazarın, o sırada yazan birçok kişiden olduğu gibi, en iyi Rus blogcularından biri olmak için büyük ölçekli planlardı. Şimdi, şimdi bakarsanız, o zaman benimle aynı anda yaratılan bloglardan, çoğu zaten sonsuzluk içinde çözüldü. Ve ben kesinlikle eksik zaman blog oldu. Öyleyse evet, artık güncellenmiyor. Bir zamanlar 2011 blog yarışmasında bu sitede kazandım.

Bütün bunları kaldırma fikri bile vardı, ama sonra eski malzemeleri revize ettim ve okuyucular için hala faydalı olabileceklerini fark ettim. Evet, bazı makaleler modası geçmiştir (eğer yeterince gücüm varsa, uygun işaretleri alacaklarsa), ancak Site, örneğin yeni başlayanlar için faydalı olabilir - burada internetin temel kavramlarını okuyabilir, özelleştirmeyi öğrenebilirsiniz. İnternet, pencere hatta Linux'a gitmeye karar ver. Öyleyse başlıklara bakın ve sizin için uygun olanı seçin.

Ve sonuçta, umarım sadece bir blogdan daha fazlasıdır, ancak gerçek bir internet rehberidir. Site, mevcut tüm makalelerin kategorilerle yapılandırıldığı dizin modunda bulunabilir. Ve belki kim bilir, yeni kaliteli makaleler burada görünmeye başlayacak.

Züppe

Picodi.ru, uluslararası kuponlardan, bir Polonya uzmanından tasarruf ve ucuz alımlarda indirimli bir portaldır. Polonyalılar, dünyadaki en ekonomik uluslardan biri olarak kabul edilir, bu nedenle bu tür bir projenin Polonya Başlangıç \u200b\u200bKodyrabatowe.pl'den büyüdüğü şaşırtıcı değildir. Rusya'daki sıradan bir internet kullanıcısına bu portal için ne yararlı olabilir?

Modern Android telefonlar telefonlardan daha fazlasıdır. Yüklü programların setine, aramalarınızın geçmişine ve kısa mesajlarınızın geçmişine, fotoğraf koleksiyonlarına ve çok şeye alışırsınız. Ancak zaman geçiyor ve tamamen düzenlenmiş cihaz yavaşlatmaya, hatayı yavaşlatmaya başlar ya da ekrandaki gövde veya çiziklerden dolayı sunabilir bir görünümü kaybeder. Yeni bir telefon seçme ve Android telefonu değiştirme sorusu var. Ve eğer seçim meselesi şimdi partiyi şimdi atlayacağız, daha sonra yeni bir telefona "hareket etmek" ciddi bir sorun olmaya devam edeceğiz - kesinlikle tüm verileri sıfırdan başlatmak istemiyorum. Burada bugün bunun hakkında konuşacağız.

Bu blogun okuyucularının çoğu, büyük olasılıkla, versiyon kontrolünün versiyonları olmadı ve yakın gelecekte gelmeyecek. Ve üzgünüm. Bu son derece kullanıcı dostu buluş programcılar tarafından yaygın olarak kullanılmaktadır, ancak bence, bence, çok yararlı olabilir ve metinlerle aktif olarak çalışanlar için. Ancak, muhtemelen, çalışmanın "ofisi" (Microsoft Office) için kullanmaya başlamak kolay olacağı bir sürüm kontrol sistemi yoktur. Bununla birlikte, makalede belirtilen malzemenin tüm okuyucular için ilginç olabileceğini düşünüyorum.

TV'nizden nasıl film izlediğini düşünüyorsanız ve internete erişin, bu makale sizin içindir. Hayır, bazı televizyonların akıllı TV'nin işlevselliğini aldığını biliyorum, ama iyi çalıştığını hiç görmedim. Görünüşe göre, Google'ın yakın zamanda tamamen çarpıcı bir cihaz olduğunu gösterdi, hemen bir his ile sona erdi. Medya Streamer Chromecast (Chromkast), geçen yılın tercih edilen oyuncu Nexus Q.'in daha mükemmel ve uygun fiyatlı bir versiyonundan bahsediyoruz.

Boyutları 2 inç'i geçmeyen Dongle Chromkast, TV'nin HDMI portuna bağlanır ve web içeriğini izlemekten keyif almanıza olanak sağlar. Flamayı kontrol etmek için, iOS, Windows, Android veya Mac OS işletim platformuna göre herhangi bir cihazı (tablet, PC, akıllı telefon) kullanabilirsiniz.

Bu makale, Android sistem bellek cihazına, eksikliği ve bunların nasıl çözülmesi nedeniyle ortaya çıkabilecek sorunlara ayrılmıştır. Ben kendimi çok uzun zaman önce, Android telefonumun belirli bir uygulama kurmaya çalışırken düzenli olarak bellek sıkıntısı hakkında düzenli olarak mesajları vermeye başlamaya başladım. Piyasadaki açıklamanın yaklaşık 16GB olması gerektiğine rağmen benim için çok garipti ve bu hacmi ek bir hafıza kartı kullanarak da arttırdım. Bununla birlikte, problemdi ve kök erişiminin makbuzunu veya telefonun fabrika durumuna tamamen geri kazanılmasını gerektirmeyen doğru çözümü bulmadan önce iyice tinker yapmalıydım.

Son zamanlarda, e-iş sistemleri inşa etmek için çok dikkat edilir, ya da onlar da denir - B2B (iş için iş). Vücudun İnternet Teknolojilerini Koordinasyon Koordinasyon Sistemlerinin İnşaatı konusundaki önerileri göz önüne alındığında, WWW Konsorsiyumu: XML teknolojileri ve bina XML belge değişim sistemlerine vurgu yapılır.

E-işinde XML kullanmanın avantajı, yapılandırılmış bilgilerin net ve görsel gösterimi nedeniyle, modern ağ protokollerini kullanabilme ve gerçek zamanlı iş sistemleri oluşturma kabiliyeti nedeniyle oluşturulması için düşük maliyetli B2B sistemlerinin yüksek verimliliğidir.

XML belgeleri şeklinde bilgi sunumunun bağımsızlığı, elektronik işlere katılmak, birbirinden bağımsız olarak üretmek için farklıdır.

Tüm sistemlerde, değişim genellikle HTTP isteklerini kullanarak aynı şema tarafından oluşturulur. SSL protokolü, SSL protokolü olarak uygulanır (ancak bu ayrı bir konudur).

XML mesajlarını işlemek için olası seçeneklerden biri, XML belgelerini oluşturan veya işleyen Bin / CGI (ISAPI) -NEWS veya COM (sunucu) bileşenlerini oluşturmaktır.

Bir yandan, uygulama, posta modunda bir HTTP sorgusu, diğer yandan, sorgu işlemesinin ve bir cevabın işlendiği bir Web sunucusu olduğu bir istemci olarak işlev görür. Bilgi değişimi, XML belgelerini kullanır.

En etkili uygulama seçeneklerinden biri, DOM modelini destekleyen mevcut bir XML ayrıştırıcısının kullanımıdır. Böyle bir ayrıştırıcı, Win`98 veya IE 4.7'nin (Win`95 için) entegre bir parçasıdır (Win`95 için) ve MSXML.dll kütüphanesinde bulunan COM sunucusunu temsil eder.

Bileşen Nesne Modeli (COM) kapsüllenmiş veri ve yöntemler tek bir özüne ve bunlara arayüz sistemi üzerinden erişmenin bir yoludur. Delphi, COM nesne sınıflarına erişmek için kolayca erişilebilirdir (birkaç sınıf bir COM sunucusunda dahil edilebilir). Nesnelere erişim, sınıf örneğini arayüz sistemi aracılığıyla başlatılarak gerçekleştirilir. Arabirimlerin açıklaması, ortamın araçlarını otomatik olarak gerçekleştirmek mümkün olan arayüz tanım diliyle (IDL) gerçekleştirilir.

Delphi, COM sunucusundan ithalat anlamına gelir. msxml.dll.IDL arayüzü açıklama dosyaları oluşturulur ve kütüphane türünün ikili açıklama dosyası TLB'dir. Bu işlem sistem menüsünden gerçekleştirilir: Proje | Tip Kitaplığı İçe Aktarma:(Resim 1). Bir COM nesnesi seçmek istediğiniz aşağıdaki iletişim kutusu belirir (bizim durumumuzda, nesne "Microsoft.xmldom (sürüm 2.0)" olarak kaydedilir) ve bir TLB dosyası oluşturun (düğme) Birim oluştur.). TLB dosyasını kullanarak, çevre, COM sunucusunun "Paskalevsky" dosya açıklamasını oluşturur - MSXML_TLB.PAS

MSXML_TLB.PAS dosyası, tüm arayüzleri, sabitleri ve COM sunucularını açıklar.

COM öğesinin nesnelerine erişim için, Direktifte gereklidir. Kullanır.kütüphane Açıklama Dosyasının adını (MSXML_TLB.PAS) ekleyin. Aşağıda, XML belgesini indiren ve MEMO1 metin kutusu öğesinde görüntülenen DOM Standard Msxml.dll Analyzer'i kullanan en basit programdır.

kullanır. Windows, Mesajlar, Sysutils, Sınıflar, Grafikler, Kontroller, Formlar, Diyaloglar, Oleserver, MSXML_TLB, STDCTRLS; tip Tform1 \u003d. sınıf(TForm) düğmesi1: tbutton; Memo1: tmemo; prosedür. Button1Click (Gönderen: TOGJECT); son; var. Form1: TForm1; uygulama ($ R * .dfm) Prosedür.Tform1.button1Click (Gönderen: TOGJECT); // Soklass Nesnesi DOMDOCUMENT Beyanı; var.cODOC: CODOMDOCUMENT; // sınıf, IDOMDocument arayüzü ile tutarlı; var.DOC: ixmldocument; başla. // DOMDocument nesnesinin bir örneğini oluşturma; DOC: \u003d codoc.create; // DOMDocument nesnesinin bir örneğinin bir mod yöntemini çağırın; DOC.LOAD ("data.xml"); // DOMDocument nesnesinin XML özellik örneğine erişim; Memo1.Text: \u003d doc.xml; son; son.

Dom Kavramı - Nesne Belgesi Modeli

Her bir XML belgesi, bireysel elemanlara (nesne alanlarına) erişimin mümkün olduğu, çok sayıda nesnenin (sınıf) bir dizi olarak gösterilir. DOM - Arabirim, hem basit domstring veya karakterData nesnelerine ve parçalarına veya belgenin ayrı xml elemanlarına erişimi açıklar: DOMFRAGENTElement, DOMNODE, DOMELEMENT.

Aşağıdakiler, XmldomDocument, XmldOmnode, Xmldomnodelist'in en önemli özellikleri ve yöntemleridir. MSXML.DLL XML Analyzer, aşağıda sunulan MSXML.dll XML Analiz Cihazı, MSXML.dll XML analizörü tarafından W3C modelinin onayladığı DOM konsorsiyumundan daha kullandığı belirtilmelidir.

Arayüz DOM nesnelerinin daha eksiksiz bir açıklaması bulunabilir

Xmldomdocument nesnesi
Nesne hiyerarşisinin üst seviyesini temsil eder ve bir belge ile çalışmak için yöntemler içerir: indirmeleri, analizi, öğeleri oluşturma, nitelikler, yorum vb. .
Özellikleri
Asenkron. Mevcut işleme modunu tanımlayan özellik
Ayrıştırma hatası XMLDOMPARSEError hata işleme nesnesine bir başvuru döndürür
Etkinleştir - belge doğrulamasını devre dışı bırakın.
url Belgenin URL'sini döndürür
belgeselleşme Belgenin kök elemanına XMLDomement nesnesi olarak bir referans içerir.
Yöntemler
yük (URL)
loadxml (xmlstring)
Bir XML belgesi yükler
kaydet (objtarget) XML belgesini dosyadaki kaydeder
İptal etmek. Belgeyi indirme ve işleme sürecini kesintiye uğratmak.
createAttribute (Ad) Geçerli öğe için belirtilen adla yeni bir özellik oluşturur.
createnode (Tip, Ad, AdPaceuri) Belirtilen tür ve başlığın bir düğümü oluşturur
createelment (tagname) Belirtilen adla bir belge öğesi oluşturur.
createtextnode (veriler) Belgenin içindeki metin oluşturur
getelerementsbytagname (tagname) Belge öğelerinin toplanmasına belirtilen adla bir bağlantı döndürür.
nodefromid (idstring) Tanımlayıcı tarafından arama öğesi

Xmldomnode nesnesi
Temel DOM arayüzünü uygulayan XmldOmnode nesnesi Düğüm., Bir belge ağacının ayrı bir düğümü ile manipüle etmek için tasarlanmıştır. Özellikleri ve yöntemleri Geçerli düğüm hakkında tam bilgiyi almanıza ve değiştirmenize izin verir - türü, adı, tam adı, içeriği, çocuk elemanlarının bir listesi vb.
Özellikleri
nodename, Basename. Geçerli düğümün adını döndürür.
Önek. Ad alanı önekini döndürür.
veri tipi Geçerli düğümün içerik türünü tanımlar
nOMETYPE, NOMETYPESTRING Geçerli düğümün türünü döndürür:
Öznitellikler. XMLDOMNAMENDEMAP koleksiyonu olarak geçerli düğümün niteliklerinin bir listesini döndürür.
mETİN. Geçerli desteğin içeriğini metin biçiminde döndürür.
xml Geçerli desteğin XML'sini döndürür.
nodevalue. Geçerli düğümün içeriğini döndürür.
Çocuk günleri. Xmldomnodelist olarak çocuk elemanlarının bir listesini döndürür.
İlk, lastchild. İlk / son çocuk öğesini döndürür
Önceki Blobling, Nextsibling Önceki / sonraki hemşirelik elemanını döndürür.
parentNode. Ana öğeye bir referans içerir.
ownerDocument İşaretçiyi, geçerli düğümün bulunduğu belgeye döndürür.
Yöntemler
appendchild (Newchild) Geçerli düğüme yeni bir çocuk öğesi ekler.
İnsertBefore (Newchild, RefChild) RefChild parametresi tarafından belirtilen düğümün geçerli alt üstlemede bulunan bir çocuk düğümü yerleştirir.
klonenode (derin) Geçerli öğenin bir kopyasını oluşturun.
getattribute.(İsim)
getattributenode. (İsim)
setTribute (Ad, Değer)
setattributenode (xmldomattribute)
Niteliklere (oluşturma, okuma, yazma) nesnesine erişim. İsim - öznitelik adı, değer - değeri. Xmldomattribute nesnesinin değerini döndürür.
replachild (Newchild, Oldchild) RemoveChild (OldChild) OldChild Nesnesinin mevcut iştirak listesinin NewChild üzerindeki nesnesini değiştirme. OldChild Nesnesini Çıkarma
selectNodes SelectSingLende (Patternstring) Arama deseni veya ilk düğüm tarafından seçilen XmldOmnodelist nesnesini döndürür
transformNode (Styesheet)
transformNoDetObject (Stylesheet, OutperestObject)
Geçerli düğümü desteklemek için bir stil tablosu atar ve dizgeyi döndürür - işlemenin sonucu. DOMDocument nesnesine bir referans, XSL talimatlarının bulunduğu bir parametre olarak iletilir.

İşte XML kullanarak.

Daha net bir resim için, bir açıklama gereklidir ve bunun nedeni, nasıl çalıştığını anlamanız için gereklidir:

Bir B2B veya Kurumsal ERP sistemi oluştururken, Prom-I'in işletmeler veya şubeleri arasında XML belgelerinin bir bilgi alışverişini düzenlerken, HTTP protokollerinde mevcut Web sunucuları temelinde etkili bir şekilde kanıtlanmış bir bilgi sistemi kullanılır.

Bir yandan, uygulama, posta modunda bir HTTP sorgusu sorunlarken bir istemci olarak işlev görür, diğer taraftan, Web sunucusu isteğin işlendiği ve yanıtın yanındadır. XML belgeleri değişim olarak kullanılır.

Örneğin, muhasebe programının basit bir kurumsal ERP sisteminde (ACS muhasebesi), bir fatura için belirli bir istek oluşturmak ve bir depoya (ACS deposu) olan bir dala aktarmak gerekir. Sanat, sistemin bir B2B'sini oluştururken, bir işletme, bir işletme, ürünlerin kullanılabilirliğini (satın alma talebinde bulunur) tedarikçisinden, sistemin bir B2B'si oluştururken benzer bir ortamdır.

Kurumsal A ve Programı bir müşteri olarak işlev görür. Depo, SQL Server'da bir depo BD kompleksi olan tedarikçiye hizmet vermektedir. Borsa, Kurumsal Bir Web Sunucusu Tedarikçisi V ile gerçekleştirilir.

Aşağıda aşağıdaki tipik değişim algoritmasıdır:


Figür 3.
  1. Kurumsal A.başlatmak İşlem A.(Ürün siparişi), web istemcisi olarak işlev görür.
  2. İşlem A.bir XML belgesi oluşturur (örneğin, bir fatura) ve bir web tedarikçisi sunucusuna Gönderilen bir HTTP sorgusu olarak iletir. Bir URI olarak bir işleme uygulama tanımlayıcısı kullanılır. URI, her tür için her tür belge veya birey için aynı olabilir. Hepsi B2B (Web) sunucusunun yapısına bağlıdır.
  3. Web Sunucusu isteği analiz eder ve sunucuyu oluşturur İşlem B.Bir XML belgesini parametre olarak geçirerek.
    Web sunucusundaki işlem, ASP sayfası, CGI (ISAPI) - uygulama veya Java Sevrlet (Sunucu Uygulaması) olarak başlatılır ve işlenir.
  4. İşlem B.- SQL veritabanı sunucusuna bir istek oluşturur.
  5. SQL Server, veritabanındaki gerekli işlemleri yapar, cevabı oluşturur ve iade eder. İşlem B..
  6. SQL Server'ın cevabında İşlem B. Bir XML belgesi oluşturur (cevap) ve HTTP isteğine istemci uygulamasına bir cevap olarak izin verir.
  7. Ayrıca, istemci tarafındaki duruma bağlı olarak, yeni bir HTTP sorgusu oluşturulur veya oturum sona erer.

Belge yönetimi organizasyonu hakkında birkaç kelime.

XML değişim sisteminin genel geliştirilmesinin genel kuralı:

  • ilk olarak- Elektronik belgelerin akışının devresinin geliştirilmesi ve yapıları;
  • İkinci olarak- İşlemlerin fonksiyonlarının tablolarının geliştirilmesi (alt işlemler) yani. Hangi XML belgesinin her bir işlemi uygulayacağı ile ilgili hangi işlevi.

Bir HTML belgesi gibi her bir XML belgesi, bir mesaj başlığından (bilgi mahkum) ve bir mesaj gövdesinden oluşmalıdır (bu bilgiyi isteğe cevap vermek için etiketlemek suretiyle "sorgu için). XML belgesinin doğru bir şekilde oluşturulması için, örneğin "başlık" ve "Talep" nin iki bileşeni için gereklidir. Standart belgenin görünümü aşağıda sunulmuştur:

Ünvan (Şekil 4), belgenin HTML'nin aksine, iletilen belgenin türü ve işleme işlemi hakkında bilgi dahil olmak üzere farklı tür hizmet bilgileri içermelidir. Belgenin bilgilendirme işlemi alındı, yani. Anlamlı kısmı etiketle çerçevelenmiştir. Başlık yapısının her tür belge için birleşmesi gerektiği belirtilmelidir.

Sunucu tarafından çalışan işlem için, işleme algoritması, aşağıdaki gibi inşa etmek için tercihen (ancak gerekli değildir)


Şekil 6.

Bir müşteri parçası oluştururken bazı asıl anlar

Daha önce açıklandığı gibi, bir XML belgesi oluştururken sunumunu bir DOM model biçiminde kullanır. Aşağıda, XML mesaj başlığı programının Delphi metninin metninin bir örneğidir.

prosedür.Thread1.headercreate (Gönderen: TOGJECT); var. // Oluşturmak için Duyuru Duyuru Gerekli CODOC: CODOMDOCUMENT; // xmldomdocument nesnesi DOC: DOMDOCUMENT; R: ixmldomelement; Düğüm: ixmldomelement; // domText txt: ixmldomtext; // domattribute attr: ixmldomattribute; başla. // dom belgesi oluşturma DOC: \u003d codoc.create; Doc.set_async (yanlış); // ilk başlatma dom belgesi Doc.loadxml ("
"); // domelement oluşturma (etiket)<Gönderen.>) Düğüm: \u003d DOC.CreateEnment ("Gönderen"); // bir metin düğümü oluşturma " LLC "Tayfun"" Txt: \u003d doc.createTextNode ("LLC" Typhoon "); // bir düğüm atama<Gönderen.\u003e Değer // metin düğümü " LLC "Tayfun"" Node.appendchild (txt); // bir öğe ekleme<Gönderen.\u003e Bir iştiraki olarak belgenin kökünde R.appendchild (düğüm); <Dan.> Düğüm: \u003d DOC.CreateEnment ("dan"); Txt: \u003d doc.createTextNode ("http://tayfun.ru/xml/default.asp"); Node.appendchild (txt); R.appendchild (düğüm); // Etiket için benzer işlemler<İçin.> Düğüm: \u003d DOC.CreateEnement ("to"); Txt: \u003d doc.createTextNode ("http://irbis.ru"); Node.appendchild (txt); R.appendchild (düğüm); // domelement () oluştur Düğüm: \u003d DOC.CreateEnement ("Tipedocument"); // bir xmldomattribute düğümü oluşturma ATT: \u003d DOC.CreateTtribute ("ID", "Sipariş"); // Node.appendchild (ATT); R.appendchild (düğüm); son;

CODOC: CODOMDOCUMENT ve DOC: DOMDOCUMENT değişkeni ve CREATE yönteminin oluşturulması (DOC: \u003d codoc.create;) bir kez yapıldığı belirtilmelidir. Değişken beyanı, küresel değişkenlerin açıklamasıdır ve yerel prosedürde değil, bu örnekte görünürlük için gösterildiği gibi (yani DOMDocument Tipi bir program modülünün bir küresel değişkeni).

Yukarıdaki programın sonucu, XML belgesi örneğimize göre oluşturulan başlık olacaktır: Şekil 5'te gösterilmiştir.


Şekil 5.


Şekil 6.

Bilgilerin XML belgeleri biçiminde iletmenin ana avantajı, hem alınan ve iletilen taraftaki DBM'lerdeki tabloların bağımsız yapısını kullanarak bir mesajın oluşturulması mümkündür. Örneğimizi kullanarak, işletmenin faturalarıyla ilgili bilgileri, Şekil 6'da gösterilen yapının DBM'lerinden aktarılması gerekmesine izin verin.

Fatura içeren bir Fatura içeren bir XML belgesi oluşturmak için, fatura hakkında bilgi içeren bir SQL isteği (sorgu a):

Seçmek * Invoice_general'den Nerede. İnvoiNum \u003d: num SeçmekMallar, quulity, fiyat, hz_cod Dan.Mal Nerede. İnvoiNum \u003d: num //: num - Fatura numarasını belirten parametre.

Aşağıda, XML belgesinin gövdesini oluşturan programın bir parçasıdır:

prosedür. Tthread1.databodycreate (Gönderen: TOBJECT); var. // sınıflar ve xmldomdocument // codoc: codomdocument; // tüm modül için küresel olmalı. // DOC: DOMDOCUMENT; // Domelement nesnelerinin duyurusu R: ixmldomelement; // domelement; Düğüm, node2: ixmldomelement; Node3, node4: ixmldomelement; // domText txt: ixmldomtext; STR: Dize; // Fatura numarası: tamsayı; - Global Değişken - // Masching 987654 // Querya, Queryb: Dize; - Global Değişken, // Talep Talebini Sürdürme // Querya - İstek ve Genel Bilgiler Fatura // Queryb - Sorgu B // Fatura'da açıklanan mallar hakkında bilgi (metne bakınız) başla. Query.close; // "A talep" metninde bakınız. Query.text: \u003d querya; // yürütme isteyin Query.execsql; Query.open; // kök öğenin adresini alın R: \u003d doc.get_documentelement; Node2: \u003d DOC.CreateEnment ("istek"); // domelement oluştur (etiket) Düğüm: \u003d doc.CreateEnment ("fatura"); // Kök için bir öğe ekleme R.appendchild (node2); // içine bir öğe ekleme Node2. Appendchild (düğüm); // domelement oluştur (etiket) Node3: \u003d DOC.CreateEnment ("Defurture"); // içine bir öğe ekleme Düğüm. Appendchild (node3); // "Defurtur" alanına itiraz et Str: \u003d query.fieldbyname ("depres deneyin"). Asstring; // bir metin oluşturma düğümü \u003d alan değeri // düğüm atama değeri // Metin Düğümü, Değişken STR Node.appendchild (txt); // Etiket için benzer işlemler , , // , // (alan db "alıcı") Düğüm: \u003d DOC.CreateEnment ("Hedef"); // Veritabanı alanının adı, adıyla çakışmayabilir. Str: \u003d query.fieldbyname ("alıcı") .asstring; // taga, bu kullanımdan Txt: \u003d doc.createTextNode (str); // DOM Arabirimi XML arayüzünün desteğine sahip DBMS'den önce, // Oracle 8i veya MS SQL 2000 Tipi Node.appendchild (txt); ... // mal özellikleri için bir talebin oluşumu // erişim isteğini kapatır Query.close; // "istek isteği" metninde bkz. Bilgi. Ürünler hakkında Query.text: \u003d queryb; // parametre değerlerini atama Query.params.asinteger: \u003d invoicenumber; // yürütme isteyin Query2.execsql; // veri istemek için erişimi açma Query.open; // domelement oluştur (etiket) Node3: \u003d doc.createEnment ("imems"); // içine bir öğe ekleme Düğüm. Appendchild (node3); // tüm isteklerde döngü süre değil. Eof.query. yapmak. BAŞLANGIÇ NODE4: \u003d DOC.CreateEnment ("IMEM"); // içine bir öğe ekleme Node3.AppendChild (node4); // etiket için veri üretimi Str: \u003d query.fieldbyname ("fiyat"). Asstring; Txt: \u003d doc.createTextNode (str); Node.appendchild (txt); ... // Etiketler için benzer işlemler , , son; son;

Bu prosedürün bir sonucu olarak, XML belgesinin aşağıdaki metni oluşturulur:


Açık yöntem, bir sorgu oluşturmak için kullanılır. İxmlhttprquest:

prosedür. Açık (Const Bstrmethod, - Yöntem Tipi \u003d "" BTRURL, - URL Varasync Sunucu Adresi, - Asenkron / Senkron İletişim Modu \u003d True Bstruser, - BSTRassword Kimlik Doğrulama için Kullanıcı Adı) - Şifre

Belge işlemenin bir sunucu parçası oluşturma

Daha önce belirtildiği gibi, HTTP isteğinin işlenmesi, CGI uygulamaları veya Java Servlet'leri yapılabilir. ASP sayfalarını yazmak için olası seçenekler. Ancak bu durumda, veri iletimi yalnızca sorgu dizesini kullanarak "GET" ile mümkündür. Her ne kadar, ASP sayfası isteğinin HTTP işlenmesi, CGI uygulamasından daha verimli çalışır. Bununla birlikte, bence, herhangi bir fark olmadan, soruyu nasıl çözmek ve daha önemlisi, bir işlem programı nasıl oluşturulur ve ne demektir.

Önceki bölümden bir XML belge oluşumu seçeneklerini gözden geçirirsek, sunucu uygulamasının görevi XML belgelerinin tam tersidir. Aşağıda, XML belgesini analiz eden programın bir parçasıdır:

prosedür.Tthread1.dataparser (Gönderen: TOBJECT); var. // Domelement nesnelerinin duyurusu R, fnode: ixmldomelement; Str, dosya adı: string; Parm: Dize; // Soklass duyurusu ve Codocxml, codocxsl, codocresult: codomdocument; // xmldomdocument nesnesi XMLDOC, XSLDOC, Sonuç: DOMDOCUMENT; // httpstr: string; - HTTP sorgu dizesini içeren bir genel değişken Başla. Xmldoc: \u003d codocxml.create; Xmldoc.loadxml (httpstr); // kök öğenin adresini alın R: \u003d doc.get_documentelement; // öğenin değerini elde etme Fnode: \u003d r.SelectingLenode ("// Typedocument"); // bir öznitelik değeri kimliği al \u003d "Sipariş" Dosya adı: \u003d fnode.getattibute ("id"); // ve dosya adını oluşturma Sipariş. Dosya adı: \u003d dosya adı + ". XSL"; // bir belge oluşturma xsldoc Xsldoc: \u003d codocxsl.create; Xsldoc.loadxml (dosya adı); // bir xmldoc belgesi oluşturma SonuçDoc: \u003d codocresult.create; // Senkron işleme modunun ayarlanması Sonuçdoc.set_async (yanlış); // İndirme çekini yükleme Sonuçdoc.validateonparase: \u003d true; // XMLDOC'yi XSL şablonuyla sıkın Xmldoc.Transformnoc, SonuçDoc (xsldoc, sonuç); // değişken str, metin değerine atanır // nihai belge. STR: \u003d SonuçDoc.Text; // Arama Öğesi Fnode: \u003d r.SelectingLenode ("// invoicenumber"); // ve öğenin değerini almak Parm: \u003d fnode.text; // erişim isteğini kapatır Query.close; Query.text: \u003d str; // parametrenin değerini atama Query.params.asstring: \u003d parm; // yürütme isteyin Query.execsql; son;

Tüm ayrıştırma aralığı, her bir belge türü için ayrı ayrı oluşturulan XSL şablonunu uygulamaktır. Analiz sonucu, SQL sorgu dizesidir. Sonuç olarak, oluşturulan SQL Query String'in uygulanması, DBMS'de gerekli değişiklikleri yapacaktır.

Şablondan ayrıştırma kullanmanın avantajı da bazı veri esnekliğini ortaya çıkardığı ve algoritmanın çalışma kodunun program kodundan tamamen bağımsız olmasıdır. Aşağıda, belge türünü işlemek için kullanılan XSL şablonunun metnidir.

TABREG'ye (TipeDOC, Vücut) değerlerine (") içine yerleştirin. ", "", "") Mallara (FOROICENUYUM, ADI, Fiyat, Kalite) Değerleri (": Num", " ", "", " ")

Yukarıdaki örneği açıklarken, etiket çiftlerinin kullanımının ve resmi olduğu belirtilmelidir, çünkü Ayrıştıktan sonra, ortaya çıkan XML belgesinde en az bir düğüm bulunmalıdır. SonuçDoc.Text metodu, XML belgesinin sonuçlandırılmasının analizi sırasında elde edilen metin değerini atar. Bu durumda, değer tümü etiket çiftlerinin çerçeveli ve yani Bir SQL isteği oluşturduk.

Program yazmanın bir başka özelliği, SQL parametresini kullanma olasılığı not edilmelidir. : Num. Parametrenin kullanılması, XSL şablonunun metnini basitleştirmenize olanak sağlar. Tanım XML belge düğümlerinin karşılık gelen elemanlarının değeri, başlangıçta karşılık gelen düğümün adını seçerek, örneğin:

XSL hakkında kısaca

XSL kısaltması, genişletilebilir stil sayfası dil - stil tablo biçimlendirme dilinden (XML verileri) geliyor. Genişletilebilir stil sayfası dilinden (XSL) başlığından (XSL) açık olduğundan, XML verilerini biçimlendirmek için kullanılır. W3C XSL'nin tanımı gereği iki bölümden oluşur:

  • XSLT - XSL dönüşümü. XML belgelerini dönüştürmek veya biçimlendirmek için kullanılan dil. Böylece, XSLT'yi kullanarak, birden fazla veri ve veri sunum formunun farklı bölümlerini alabiliriz.
  • Biçimlendirme öğeleri. Bu elemanlar, XSL kullanılarak işlendikten sonra, tipografik veri tasarımının tüm unsurlarını içerir. Sadece HTML sayfalarını oluşturmak için kullanılır.

XSLT'yi kullanma, ihtiyacınız olan XML dosyasındaki verileri seçebilir ve kullanıcıyı sağlamak için formda düzenleyebiliriz. Örneğin, bizim durumumuzda, XML verilerini bir SQL sorgusu olarak dönüştürdük. Klasik XSL uygulaması genellikle verileri bir HTML sayfası veya RTF dosyaları biçiminde nadir bir gösterim olarak biçimlendirir.

XSL dosyası, XML veri dönüşümünün gerçekleştirileceği şablon (şablon) açıklanmaktadır. XSL şablonlarına geri dönerek, XSLT (direktiflerde) aşağıdaki unsurlar tahsis edilebilir:

XSL Direktifi açıklama
xSL: Uygula şablonları Direktif, uygun şablonların uygulamasını belirten \u003d "Şablon adı"
xSL: nitelik. Öznitelik ağacını oluşturur ve çıkış öğesine, adı \u003d "öznitelik adı" parametresi, ad alanındaki URI (Namespace Öneki)
xSL: çağrı şablonu bir şablona neden olur, öznitelik adı \u003d "Şablonda URI"
xSL: Seç.
xSL: Ne zaman.
xSL: Aksi takdirde.
koşulla bir seçim yapılması XSL: Expr \u003d "Komut dosyasında ifadeyi hesaplama",
dil \u003d "Dil adı"
test \u003d "Hesaplanan İfade"
xSL: Yorum Çıktı belgesinde bir yorum oluşturur
xSL: Kopyala.
xSL: kopyası
geçerli düğümü çıkış kaynağındaki kopyalar veya belge parçasını, seçilen \u003d "Kaynak düğümünün adı" niteliğinin seçildiği düğüme yerleştirir.
xSL: Eleman İsme göre bir çıktı elemanı oluşturur, öznitelik adı \u003d "Element ad", ad alanı \u003d "NAME alanına URI referansı"
xSL: her biri için Şablonu tüm düğümler liste düğümlerine yeniden uygulayın, öznitelik düğümünün bir listesini ayarlar.
xSL: Eğer. koşullar Kontrolü, bir ifade olarak test niteliği tarafından ayarlanır.
xSL: dahil harici bir şablon içerir, href \u003d "URI referansı"
xSL: çıktı Çıktı sonucunu belirtir, yöntem özniteliği "XML", "HTML" veya "Metin" olabilir
xSL: param parametre değerini, adını \u003d "parametre adı" özniteliğini belirtir, Seçin \u003d "Değer"
xSL: İşleme-talimat İşleme için talimatlar oluşturur, öznitelik adı \u003d "Ad Proses Talimatları"
xSL: Sırala. birçok düğümü, özniteliklerini seçer \u003d "düğüm adı", veri türü \u003d veri türü ("metin" | "numarası" | QNAME), Sipariş \u003d sıralama yönü ("Yükselen" | "Azalan")
xSL: Stil sayfası. xSL şablon belgesini tanımlar, XSLT için kök öğesidir.
xSL: Şablon. xSL şablonunu belirtir, ad \u003d "Uri Prefix özniteliğine", maç \u003d "Şablonun geçerli olduğu düğüme not edin"
xSL: Metin. Çıkış akışına metin oluşturur, Devre Dışı Bırak-Çıkış-Escaping \u003d "Evet" veya "Hayır" niteliği, ESC karakterleri oluşturma yeteneğini gösterir.
xSL: değeri seçilen düğümün değerini metin olarak ekler, Değerin alındığı seçilen \u003d "Düğüme işaretçi" özniteliğini seçin.
xSL: değişken değişken sınırların değerini belirtir, ad özniteliği \u003d "Değişken Adı", SELECT \u003d "Değişkenin değerini hesapla"
xSL: ile param parametreyi şablona uygular, ad özniteliği \u003d "Parametre Adı", Seçin, geçerli bağlamı, varsayılan değeri hesaplamak için \u003d İfade "seçeneğini seçin.

Sonuç

Sonuç olarak, Standart XML ayrıştırıcısının kullanıldığı belirtilmelidir. msxml.dll.xML belgelerini ayrıştırmanın ve oluşturmanın tek yolu değildir. Örneğin, bileşenleri etkili bir şekilde kullanmak için XML belgeleri oluşturmak için Tpageproduser.ve Ttableproduser.. Ancak bu makale yalnızca pratikte bir DOM modelini uygulamanın genişliğini ve olasılığını vurgulamaktadır.

Yazar, konunun alaka düzeyine, genel içeriğin, sunum stilinin yanı sıra, bir eşya koleksiyonu ve kapsayan kitapların serbest bırakılmasını sağlayacak diğer tüm yorumlar hakkında geri bildirim için çok minnettar olacaktır. E-ticarette XML belgelerinin kullanımının pratik tarafının konusu. Elektronik belgelerin uygulamasının pratik tarafı hakkında daha fazla bilgi için, yazarın web sitesinde www.edocs.al.ru adresinden öğrenebilirsiniz, ayrıca kaynak metinleri ve örnekleri yerleştirmek de planlanmaktadır.

XML dili giderek daha fazla bilgi depolamak, uygulamalar ve web düğümleri arasında paylaşır. Birçok uygulamada, bu dil, XML verilerini dışa aktarmak ve içe aktarmak için diğerlerdeki temel verilerin temel bir depolanması olarak kullanılır. Bundan, geliştiricilerin kendi uygulamalarınızda XML verilerini nasıl kullanacağınızı düşünmelerinin zamanı gelmesidir.

Bu yazıda, XML Belge Nesne Modelini (DOM) ve Microsoft - Microsoft XML DOM tarafından uygulanmasını düşüneceğiz.

XML DOM, geliştirici nesneleri XML dosyalarını indirmek ve işlemek için sağlayan bir nesne modelidir. Nesne modeli aşağıdaki ana nesnelerden oluşur: XMLDOMDOCUMENT, XMLDOMNODELIST, XMLDOMNODE, XMLDOMNAMEDNODEMAP ve XMLDOMPARSEERROR. Bu nesnelerin her biri (XMLDOMPARSEError hariç), nesne hakkında bilgi edinmek, nesnenin değerlerini ve yapısını manipüle etmenin yanı sıra XML belge yapısı boyunca hareket etmenin özelliklerini ve yöntemlerini içerir.

XML DOM'un ana nesnelerini düşünün ve Borland Delphi'de kullanımlarının birkaç örneğini verin.

Borland Delphi'de XML DOM kullanma

Delphi uygulamalarında Microsoft XML DOM'u kullanmak için, uygun tür kitaplığını projeye bağlamanız gerekir. Bunu yapmak için projeyi yürütüyoruz | Tip Kitaplığı'na İçe Aktarma Türü Kitaplığı iletişim panelinde, genellikle Windows \\ System \\ msxml.dll dosyasında bulunan Microsoft XML sürüm 2.0 kütüphanesini (sürüm 2.0) seçin.

Birim Oluştur düğmesine bastıktan sonra, MSXML_TLB arabirim modülü oluşturulacak, bu da XML DOM nesnelerini kullanmamıza izin verilir: MSXML.dll kütüphanesinde uygulanan DOMDocument, XmlDocument, XMLHTTPREQUEST ve bir dizi başkalarının. MSXML_TLB modülüne bağlantı, kullanım listesinde listelenmelidir.

XML DOM cihazı

Belge Nesne Modeli, dallardan oluşan bir ağaç yapısı biçiminde bir XML belgesini temsil eder. XML DOM yazılım arayüzleri, uygulamaların belge ağacını gezinmesine ve dallarını manipüle etmelerine izin verir. Her dal, hangi ebeveyn ve bağlı ortaklıkların belirlendiğine göre belirli bir tür (DOMNODETYPE) olabilir. Çoğu XML belgesinde, unsur, nitelik ve metin dallarının dallarını bulabilirsiniz. Öznitelikler (öznitelik) özel bir dal türüdür ve bağlı olmayan dal değildir. Öznitelik yönetimi için, XML DOM nesneleri tarafından sağlanan özel yöntemler kullanılır.

Önerilen World Wide Web Consorsium (W3C) arayüzlerini uygulamanın yanı sıra, Microsoft XML DOM, XSL, XSL desenlerini, ad alanlarını ve veri türlerini destekleyen yöntemleri içerir. Örneğin, SelectNodes yöntemi, belirli bir bağlamda dalları aramak için XSL şablonları sözdizimini (XSL desen sözdizimi) kullanmanıza izin verir ve TransformNode yöntemi, XSL'nin dönüşümleri gerçekleştirmek için kullanılmasını destekler.

XML belgesini test et

Bir XML belgesine bir örnek olarak, aşağıdaki yapıya sahip olan Müzik CD-ROM kataloğunu alın:

İmparatorluk burlesque Bob Dylan. AMERİKA BİRLEŞİK DEVLETLERİ. Columbia. 10.90 1985 Kalbini gizle. Bonnie Tylor. İngiltere. CBS kayıtları. 9.90 1988 ... Kalbimi özgür bırak. Joe cocker. AMERİKA BİRLEŞİK DEVLETLERİ. Emi 8.20 1987

Şimdi XMLDOMDocument nesnesiyle başlayacak olan nesne modeli XML DOM, aşinalık görmeye başlamaya hazırız.

XML Belgesi - XMLDOMDocument Nesnesi

XML belgesiyle çalışmak indirmesi ile başlar. Bunu yapmak için, indirilen belgenin URL'sini belirten yalnızca bir parametreye sahip olan yük yöntemini kullanıyoruz. Dosyaları yerel bir diskten indirirken, yalnızca tam dosya adı belirtilir (bu durumda bu durumda Dosya: /// Protokol). XML belgesi bir dize olarak kaydedilirse, LoadXML yöntemi böyle bir belgeyi indirmek için kullanılmalıdır.

Bir belgeyi indirme yöntemini (senkron veya eşzamansız) kontrol etmek için, Async özelliği kullanılır. Varsayılan olarak, bu özellik, belgenin asenkron olarak yüklendiğini ve kontrolün tamamen yükleninceye kadar bile uygulamaya iade edildiğini belirten geçerlidir. Aksi takdirde, belge senkronize olarak yüklenir ve ardından belgeyi yüklemek veya değil, öğrenmek için ReadyState özelliğinin değerini kontrol etmeniz gerekir. Ayrıca, ReadyState özelliğinin değerini değiştirirken kontrol alacak bir ONREADYSTATECHANGANGE Olay İşleyicisi de oluşturabilirsiniz.

Aşağıda, yük yöntemini kullanarak bir XML belgesinin nasıl indirileceği gösterilmiştir:

Kullanıcılar ... MSXML_TLB ... Prosedür TForm1.Button1Click (Gönderen: TOGJECT); Var xmldoc: ixmldomdocument; XMLDOC: \u003d codomdocument.create'e başla; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // // İşte // XML belgesini ve şubelerini // XMLDOC: \u003d NIL; son;

Belge yüklendikten sonra, özelliklerine başvurabiliriz. Böylece, NODENAME özelliği #Document değerini içerecektir, NOMETYPESTRING özelliği bir belge değeridir, URL özelliği: /// C: /Data/Data.xml değeridir.

İşleme hatasıdır

Özel ilgi alanı, yüklendiğinde belgenin işlenmesi ile ilişkili özelliklerdir. Böylece, ParseError özelliği, işlem işlemi sırasında meydana gelen hata bilgilerini içeren bir XMLDOMPARSEErrorror nesnesini döndürür.

Bir hata işleyicisi yazmak için aşağıdaki kodu ekleyebilirsiniz:

Var xmlError: ixmldomparseError; ... xmldoc.load ('C: \\ Data \\ Data.xml'); XmlError: \u003d xmldoc.parseError; Eğer xmlerror.errorcode.<> 0 O zaman // // burada hatayı işleriz // else memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;

Hata durumunda hangi bilgilerin iade edildiğini öğrenmek için aşağıdaki dizin öğesini değiştirin:

İmparatorluk burlesque Bob Dylan. AMERİKA BİRLEŞİK DEVLETLERİ. Columbia. 10.90 1985

kapanış elemanını çıkarma İkinci satırda:</p><p> <CD> <TITLE>İmparatorluk burlesque <ARTIST>Bob Dylan.</ARTIST> <COUNTRY>AMERİKA BİRLEŞİK DEVLETLERİ.</COUNTRY> <COMPANY>Columbia.</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </p><p>Şimdi XMLDOMPARSEErrorror nesnesinin özelliklerini döndüren kodu yazın:</p><p>XmlError: \u003d xmldoc.parseError; Eğer xmlerror.errorcode.<> 0 sonra XMLError, Memo1.line ile ekle ('Dosya:' + URL); Ekle ('kod:' + inttostr (errorcode)); Ekle ('Hata:' + Sebep); Ekle ('Metin:' + SRCText); Ekle ('satır:' + inttostr (satır)); Ekle ('pozisyon:' + inttostr (LINEPOS)); END ENTER Memo1.lines.add (xmldoc.xml); Son;</p><p>ve başvurumuzu yerine getirin. Sonuç olarak, aşağıdaki hata bilgilerini alırız.</p> <p>Yukarıdaki örnekte görülebileceği gibi, XMLDOMPARSEError nesnesi tarafından döndürülen bilgiler, hatayı yerelleştirmek ve oluşmasının nedenini anlamak için yeterlidir.</p> <p>Şimdi kapanış öğesini geri yükle <TITLE> Belgemizde ve XML DOM'un tartışmasına devam edin.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Belge ağacına erişim</h2> <p>Belge ağacına erişmek için, kök elemanı alabilir ve daha sonra bağlı ortaklıklarından geçebilir veya belirli bir şube bulabilirsiniz. İlk durumda, kök elemanını Belgesel Mülkiyet'i aracılığıyla alırız, bu da XmldOmnode tipi bir nesneyi döndürür. Aşağıda, her çocuk elemanının içeriğini elde etmek için Belgesellement Mülkiyetinin nasıl kullanılacağı gösterilmiştir:</p><p>Var düğümü: ixmldomnode; Kök: ixmldomelement; I: tamsayı; ... root: \u003d xmldoc.documentelement; I için: \u003d 0 root.ChildNodes.Length-1 düğümü başlar: \u003d root.childnodes.item [i]; Memo1.lines.add (node.text); Son;</p><p>XML belgemiz için aşağıdaki metni alıyoruz.</p> <p>İlk bağlı ortaklığın altındaki bir tür özel şube veya şube seviyesi ile ilgileniyorsak, XMLDOMDocument nesnesinin NODEFROMID yöntemini veya GetElembyTagname yöntemini kullanabiliriz.</p> <p>NODEFROMID yöntemi, XML şemasında veya belge türü tanımında (DTD) tanımlanan benzersiz bir tanımlayıcı belirtilmesini gerektirir ve bu tanımlayıcıyla bir dal döndürür.</p> <p>GetElemementBytagName yöntemi, belirli bir eleman (etiket) olan bir dize göstergesi gerektirir ve tüm dalları bu öğeyle döndürür. Aşağıda, CD-ROM dizinimizdeki tüm sanatçıları bulmak için bu yöntemin nasıl kullanılacağı gösterilmiştir:</p><p>Düğümler: ixmldomnodelist; Düğüm: ixmldomnode; ... düğümler: \u003d xmldoc.getelementsbytagname ('sanatçı'); I için: \u003d 0 Nodes.Length-1, düğüme başlar: \u003d nodes.item [i]; Memo1.lines.add (node.text); Son;</p><p>XML belgemiz için aşağıdaki metni alacağız.</p> <p>XmldOmnode SelectNodes yönteminin belgenin dallarına erişmenin daha esnek bir yolu olduğunu unutmayın. Ancak bu konuda biraz daha düşük.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Belge Şubesi - XMLDOMNODE Nesnesi</h2> <p>XMLDOMNODE nesnesi bir belge dalıdır. Belgenin kök elemanı elde edildiğinde bu nesneyi zaten bulduk:</p><p>Kök: \u003d xmldoc.documentelement;</p><p>XML belgesinin şubesinde bilgi edinmek için, XMLDOMNODE nesnesinin özelliklerini kullanabilirsiniz (Tablo 1).</p> <p>Şubede depolanan verilere erişmek için, genellikle NODEVALUE özelliğini (Nitelikler, metin dalları, yorumlar, işleme ve CDATA bölümleri için talimatlar için kullanılabilir) veya dalın metin içeriğini veya NOMETYPEDVALUE özelliğini kullanan metin özelliğini kullanın. Ancak ikincisi, yalnızca yazılan elemanlı dallar için kullanılabilir.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Belge ağacında hareketli</h3> <p>XMLDOMNODE nesnesi, belge ağacından geçmenin çeşitli yollarını sağlar. Örneğin, ana şubeye erişmek için, ParentNode özelliği kullanılır, çocuk dallarına erişim, çocuk şubelerine erişim (XmldChild tipi), FirstChild ve Lastchild (Tip XmldOmnode), vb. OwnerDocument özelliği, XML belgesinin kendisini tanımlayan bir XMLDocument nesnesi döndürür. Yukarıdaki özellikler, belge ağacından geçmeyi kolaylaştırır.</p> <p>Şimdi XML belgesinin tüm dallarını aşacağım:</p><p>Kök: \u003d xmldoc.documentelement; I için: \u003d 0 root.ChildNodes.Length-1 düğümü başlar: \u003d root.childnodes.item [i]; Eğer node.haschildnodes sonra getchilds (düğüm, 0); Son;</p><p>Yukarıda belirtildiği gibi, SelectNodes nesnesi XmldOmnode, belgenin dallarına erişmenin daha esnek bir yolu sağlar. Ek olarak, yalnızca belgenin ilk dalını döndüren bir SELECTSINGLENDE yöntemi var. Bu yöntemlerin her ikisi de, şubeleri aramak için XSL şablonlarını belirlemenizi sağlar.</p> <p>CD şubesi ve enflasyonu olan tüm dalları çıkarmak için SelectNodes yöntemini kullanma işlemini göz önünde bulundurun.</p><p>Kök: \u003d xmldoc.documentelement; Düğümler: \u003d root.SelectNodes ('CD / Price');</p><p>Düğüm koleksiyonu tüm switter fiyat cd dallarını yerleştirilecektir. XSL şablonlarının tartışılması biraz sonra geri döner.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h3> Kızı dalları tarafından manipülasyon</h3> <p>Bağlı ortaklıkların manipülasyonu için, XMLDOMNODE nesnesinin yöntemlerini kullanabiliriz (Tablo 2).</p> <p>İlk diskin kaydını tamamen silmek için aşağıdaki kodu gerçekleştirmeniz gerekir:</p><p>Var xmldoc: ixmldomdocument; Kök: ixmldomnode; Düğüm: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // kök elemanı root: \u003d xmldoc.documentelement; Düğüm: \u003d kök; // ilk bağlı ortaklığı kaldır node.removechild (node.firstchild);</p><p>Lütfen bu örnekte ilk bağlı ortaklığı kaldıracağız. İlk bağlı ortaklığın ilk elemanının nasıl çıkarılacağı, aşağıda gösterilmiştir:</p><p>Var xmldoc: ixmldomdocument; Kök: ixmldomnode; Düğüm: ixmldomnode; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.load ('C: \\ Data \\ Data.xml'); // kök elemanı root: \u003d xmldoc.documentelement; // ve ilk bağlı bağlantı düğümü: \u003d root.firstchild; // ilk bağlı ortaklığı kaldır node.removechild (node.firstchild);</p><p>Yukarıdaki örnekte, ilk şubeyi kaldırmadık. <CD>…</CD>ve şubenin ilk unsuru - <TITLE>….

Şimdi yeni bir dal ekleyin. Aşağıda, yeni bir müzik CD-ROM'unun yeni bir kaydı ekleneceğini gösteren bir kod var:

Var newnode: ixmldomnode; Çocuk: ixmldomnode; ... // Yeni bir şube oluşturun - Newnode: \u003d xmldoc.createnode (1, 'CD', ''); // öğe ekle Çocuk: \u003d xmldoc.createNode (1, 'başlık', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve Child.Text: \u003d 'Pink Floyd'; // öğe ekle <ARTIST> Çocuk: \u003d xmldoc.createNode (1, 'sanatçı', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve Child.Text: \u003d 'Division Bell'; // öğe ekle <COUNTRY> Çocuk: \u003d xmldoc.createNode (1, 'ülke', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve Child.Text: \u003d 'İngiltere'; // öğe ekle <COMPANY> Çocuk: \u003d xmldoc.createnode (1, 'şirket', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve değerini ayarla.Text: \u003d 'emi records Ltd.'; // öğe ekle <PRICE>Çocuk: \u003d xmldoc.createnode (1, 'fiyat', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve Child.Text: \u003d '11 .99 "; // bir öğe ekle <YEAR> Çocuk: \u003d xmldoc.createnode (1, 'Yıl', ''); // bir NewNode.AppendChild (alt) öğesi ekleyin; // ve Child.Text: \u003d '1994'; // ve root.appendchild şubesini (NewNode) ekleyin; ...</p><p>Yukarıdaki kod, yeni bir dal eklemek için aşağıdaki eylem sırasını gösterir:</p> <ul><li>Createnode kullanarak yeni bir dal oluşturma: <ul><li>createnode yöntemini kullanarak bir öğe oluşturma;</li> <li>appendchild yöntemiyle şubeye bir eleman ekleme;</li> <li>Öğenin değerini metin özelliği aracılığıyla ayarlamak;</li> <li>... tüm öğeler için tekrarlayın.</li> </ul></li> <li>Appendchild tarafından belgeye yeni bir dal ekleme.</li> </ul><p>Appendchild yönteminin bir ağacın sonunda bir dal eklediğini hatırlayın. Ağacın belirli bir yere bir dal eklemek için, ekleme yöntemini kullanmanız gerekir.</p> <h2> Dallar - Xmldomnodelist nesnesi</h2> <p>XmlNodelist nesnesi, selectNodes veya getAlementsbytagName yöntemleri kullanılarak oluşturulabilecek bir dalın listesini içerir ve ayrıca ChildNodes özelliğinden de elde edilir.</p> <p>Bu nesnenin kullanımını "belge ağacında hareket etme" bölümünde verilen örnekte kullandığımızdan zaten kullandık. Burada ayrıca bazı teorik yorumlar veriyoruz.</p> <p>Listedeki dalların sayısı, uzunluk özelliğinin değeri olarak elde edilebilir. Dalların 0 ila uzunluk-1 arasında endeksleri vardır ve her bir dal, karşılık gelen dizin ile bir öğe dizisi öğesi aracılığıyla mevcuttur.</p> <p>Şubeler listesinde hareket etmek de, bir sonraki şubeyi listedeki bir sonraki şubeyi döndüren veya geçerli dal ikincisi ise NIL'sini kullanarak da gerçekleştirilebilir. Listenin en üstüne dönmek için sıfırlama yöntemini aramanız gerekir.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Belgeleri Oluşturma ve Kaydetme</h2> <p>Öyleyse, şube ve elemanları mevcut XML belgelerine nasıl ekleyebileceğinize baktık. Şimdi "sinek üzerinde" bir XML belgesi oluşturun. Her şeyden önce, belgenin sadece URL'den değil, aynı zamanda her zamanki dizeden de yüklenebileceğini hatırlatacağız. Aşağıda, daha sonra geri kalan elemanları dinamik olarak oluşturmak için kullanılabilecek bir kök elemanın nasıl oluşturulduğu gösterilmiştir (bağlı ortaklıkların manipülasyonu "):</p><p>Var xmldoc: ixmldomdocument; Kök: ixmldomnode; Düğüm: ixmldomnode; S: widestring; ... s: \u003d ' <CATALOG></CATALOG>'; Xmldoc: \u003d codomdocument.create; Xmldoc.async: \u003d false; Xmldoc.loadxml (s); Kök: \u003d xmldoc.documentelement; Düğüm: \u003d xmldoc.createnode (1, 'CD', ''); Root.appendchild (düğüm); Memo1.lines.add (xmldoc.xml); ... xmldoc: \u003d nil;</p><p>Bir XML belgesi oluşturduktan sonra, Kaydet Yöntemini kullanarak dosyaya kaydedin. Örneğin:</p> <p>Xmldoc.Save ('C: \\ Data \\ newcd.xml');</p> <p>Dosyada kaydetmeye ek olarak, Kaydet Yöntemi, bir XML belgesini yeni bir XMLDOMDocument nesnesinde kaydetmenize olanak sağlar. Bu durumda, belge tam işleme ve sonuç olarak yapısını ve sözdizimini kontrol eder. Aşağıda bir belgenin başka bir nesneye nasıl kaydedileceği gösterilmiştir:</p><p>Prosedür tform1.button2Click (Gönderen: TOGJECT); Var xmldoc2: ixmldomdocument; BAŞLAYIN XMLDOC2: \u003d codomdocument.create; Xmldoc.save (xmldoc2); Memo2.lines.add (xmldoc2.xml); ... xmldoc2: \u003d nil; son;</p><p>Sonuç olarak, kaydetme yönteminin bir XML belgesini, ISTREAM, ISETStream veya IPESTREAMINIT arayüzlerini destekleyen diğer COM nesnelerine kaydetmenize izin veriyoruz.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> XSL şablonlarını kullanma</h2> <p>XmldOmnode Nesnesi SelectNodes yöntemini tartışıyorsanız, belgenin dallarına erişmenin daha esnek bir yolu olduğunu belirttik. Esneklik, dalları seçmek için bir kriter olarak, bir XSL şablonu belirleyebilirsiniz. Bu tür şablonlar, XML belgelerinde bilgi aramak için güçlü bir mekanizma sağlar. Örneğin, dizinimizdeki müzik CD-ROM'unun tüm adlarının bir listesini almak için aşağıdaki sorguyu takip edebilirsiniz:</p><p>Sanatçıların Amerika Birleşik Devletleri'nde yayınlandığı disklerin olup olmadığını öğrenmek için talep aşağıdaki gibi oluşturulur:</p><p>Düğümler: \u003d root.selectnodes ('CD / Sanatçı');</p><p>Aşağıda, dizinde ilk diskin nasıl bulunacağını gösterilir:</p><p>Düğümler: \u003d root.selectNodes ('CD / Title');</p><p>ve son olarak:</p><p>Düğümler: \u003d root.selectNodes ('CD / Title');</p><p>Bob Dilan disklerini bulmak için aşağıdaki sorguyu gerçekleştirebilirsiniz:</p><p>Düğümler: \u003d root.SelectNodes ('CD [$ ARST \u003d "Bob Dylan"] / unvanı');</p><p>ve 1985'ten sonra yayınlanan disklerin bir listesini almak için aşağıdaki sorguyu gerçekleştiriyoruz:</p><p>Düğümler: \u003d root.selectNodes ('CD / Title');</p><p>XSL sözdiziminin daha ayrıntılı bir tartışması ayrı bir yayını gerektirir. Okuyucuları iletmek ve daha fazla araştırmayı zorlamak için, XSL'nin olası kullanımına sadece bir küçük örneği vereceğim. Dizini normal HTML tablosuna dönüştürmemiz gerektiğini varsayalım. Geleneksel yollardan yararlanarak, tüm ağaç dallarını ve karşılık gelen etiketleri oluşturmak için elde edilen her bir madde için sıralamalıyız. <TD>…</TD>.</p> <p>XSL'yi kullanarak, sadece neyi ve nasıl dönüştürüleceğini gösterdiğimiz bir şablon (veya stil tablosu) oluştururuz. Sonra bu şablonu kataloğumuza uyguladık - ve hazır: Bizden önce, dizini tabloya dönüştüren XSL şablonunun metni (Liste 2).</p> <p>XSL şablonunun kataloğumuza bindirme kodu şöyle görünür:</p><p>Prosedür tform1.button2Click (Gönderen: TOGJECT); Var xsldoc: ixmldomdocument; XSLDOC: \u003d codomdocument.create; Xsldoc.load ('C: \\ Data \\ Data.xsl'); Memo2.Text: \u003d xmldoc.transformnode (xsldoc); Xsldoc: \u003d nil; son;</p><p>XSL'nin tartışmamızı tamamlayarak, şu anda bu dilin, farklı XML belgeleri arasında hem de belgeleri biçimlendirme için aktif olarak kullandığı söylenmelidir.</p> <table border="0" width="100%"><tr><td width="50%"> </td> <td width="50%"> </td> </tr></table><h2> Sonuç</h2> <p>Oldukça anlaşılabilir sebeplerden dolayı, bir makalede tüm Microsoft XML DOM nesnelerinin tümünü değerlendirmek ve kullanımlarına örnekler getirmek imkansızdır. Burada sadece XML DOM uygulamalarında kullanımdaki ana konulara dokunuyoruz. Sekmesinde. Şekil 3, Microsoft XML DOM'da uygulanan tüm nesneleri göstermektedir.</p> <p>ComputerSpress 12 "2000</p> <p>Delphi'de Sipariş Görevleri Çözme <br> Delphi, öğrencilerin en sık öğrenme sürecinde tanıştığı ikinci programlama dilidir. Bu, nesne odaklı programlamanın öğrenilmesinin başlangıcıdır. Ben, bir öğrenci olarak, kendi için bir hesap makinesi yazmaktan daha kolay bir yöntem olmadığı sonucuna varmıştır. İki sayının eklenmesinin temel işlevini gerçekleştirseniz bile, bu zaten çok fazla ışıktadır.</p> <p>Codegaear, Delphi 7, Lazarus, farklı derleyiciler, sizin tarafınızdan yazılmış makine koduna aktarılacak programlardır, onu zoliki ve birine dönüştürür. Bunlar, programlama dillerini oluşturmayan programlar oluşturma programlarıdır. Bu derlemeler, Nesne Pascal programlama dilini, her zamanki pascal'a benzer sözdizimine benzer olan, ancak fonksiyonel olarak farklı farklıdır. <br></p> <h2>Programlama dili sözdizimi nedir?</h2> <p>Bu, çeşitli operatörleri yazmak için bir formattır. Örneğin, Pascal'daki "için" döngüsü aşağıdaki formata sahiptir: "n: \u003d 1 için K yapmak", vb.</p><p>C ++ programlama dilinde, aynı döngü biraz farklı yazılır: (n \u003d 1; n bir hesap makinesi yazıyoruz</p><p>Bu, program kodu olan nesnelerin nasıl etkileşime girdiğini, "değişkenler" olan, matematiksel fonksiyonların nasıl çalıştığını anlamanızı sağlar. Her durumda tüm programlama bir hesaplama olacaktır. Oyun da sürekli bir şeyi gören bir programdır, sayılar ve sayısal fonksiyonlarla çalışır. Programlama matematikten ayrılmaz.</p> <p>Lazarus geliştirme ortamını yazmak için kullanıyoruz. İşlevselliği, Söyle, KocaGear gibi zengin değildir, ancak ücretsiz erişimdir ve çalışmak için tasarlanmıştır.</p><p>Geliştirme ortamını açarak, elemanların şeklini ve panelini görüyoruz. İşte bir form.</p> <p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-24.jpg' width="100%" loading=lazy loading=lazy></p><p>İşte eleman paneli.</p><p>Yapacağımız ilk şey, iki numaranın ek işlevini uygulamak için ihtiyacınız olan üç maddeyi eklemek. İhtiyacımız var: "Tedit" üç adet ve "Tbutton". Aşağıdaki resimde, oklar panelinde gösterilir. Onlara bir kez, sonra bir kez şekliyle tıklayınız ve üzerinde görünürler.</p><p>Bunlar giriş ve normal bir düğme için metin alanlarıdır. Neredeyse herhangi bir Windows programını kullanarak bu öğelerle karşılaşırsınız. Bir göz at.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-27.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Şimdi bu yazıtları temizleyin. Görünüm sekmesine tıklayın. Ve "nesnelerin denetçisini" tıklayın. Bu pencere görünecektir.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-28.jpg' width="100%" loading=lazy loading=lazy></p><p>Formdaki "düğmesi" öğemizde bir kez tıklayın ve Müfettiş penceresindeki "başlık" değerini başka birine değiştirin. Örneğin, "Tamam" kelimesinde. GİRİŞ'i tıklayın. Öğe adı değiştirdiği için formda görüyoruz.</p><p>Sadece düzenleme ile yap, sadece yeniden adlandırmayın, ancak onları herhangi bir içerik olmadan yapacağız. Onları sırayla vurgularız ve denetçideki metin değerini temizleriz. Enter tuşuna basmayı unutmayın.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-29.jpg' width="100%" loading=lazy loading=lazy></p><p>Sonuç olarak, formumuz buna benziyor.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-30.jpg' width="100%" loading=lazy loading=lazy><br></p> <p>Şimdi hesap makinemiz kazandığımızda, düğmemizin prosedürü için gerekli yazılım kodunu kaydetmeniz gerekir. Düğme öğesine iki kez tıklayın ve kaynak düzenleyiciyi açın.</p><p><img src='https://i2.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-31.jpg' width="100%" loading=lazy loading=lazy></p><p>Görmek? Button1Click Prosedürü. Bu, düğmeyi bir kez tıkladığımızda olanlardan sorumlu olan bir prosedürdür. Ve aşağıdakiler gerçekleşmelidir: programın, ilk iki alanda tanıtılan numaraların toplamını getirmek için üçüncü düzenlemede programa ihtiyaç vardır. Kodu yazıyoruz.</p><p><img src='https://i0.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-32.jpg' width="100%" loading=lazy loading=lazy></p><p>Yazmamız gereken bu kadar basit 5 satır kod. Yorumlar ve açıklamalar yukarıdaki resimde görülebilir. Bundan sonra, bu düğmeye tıklayın.</p> <p>Projemizin bir derlemesi derlenecek. Programda birleştirilecektir. Sayıları ilk iki alanda giriyoruz, düğmeye tıklayın ve tutarın değerini alabilirsiniz.</p><p><img src='https://i1.wp.com/reshatel.org/wp-content/uploads/2018/09/Bez-imeni-34-2.jpg' width="100%" loading=lazy loading=lazy></p> <h2>Sonuç</h2> <p>"Dosya" düğmesini tıklatabilir, ardından "HER ŞEYİ KAYDETİ" düğmesini tıklatabilirsiniz, kaydetmek için klasörü seçin ve tam teşekküllü bir programa sahip olacaksınız, başlangıcı masaüstünden yapılabilir. Şimdi, bu kodda yeniden yazmanız için kendi başınıza çözmeye çalışın, böylece programın iki numaraya bölünmesi ve katlanmaması gerekir. İpucu: Veri türünü değiştirmeniz gerekir. Aşağıdaki video benzer bir örnek göstermektedir, ancak Delphi 7'de Lazarus değil.</p><p><span class="6qR5tjJKK3g"></span></p> <p>Birçok Delphi programcısı, tasarruf ayarları ile ilişkilidir. <i>INI.</i> Programlarındaki dosyalar. Bu yöntemin kullanımı, daha az ciddi projelerde, programın daha genişlemesini önleyen esnekliğe sınırlarken, önlenmesi gerekir. Böyle bir yaklaşımın kullanım kolaylığı ve geliştirme ortamındaki yerleşik fonların varlığından dolayı oldukça popüler olduğunu söylemeye değer. <br><br> Ancak, program ayarlarını saklamak için ideal seçenek yapılandırılmıştır. <i>Xml</i> Dosyalar. Onların avantajları, parametre sayısının sabit olmayacağıdır. Bunu daha iyi anlamak için, belirli bir örneği düşünün.</p><p>USEARC programında, Kayıt'a tıkladığınızda, nokta listesini görüntüleyen bir içerik menüsü belirir. Bu öğeler, sırayla ayar dosyasından indirilen komuttur. Ayarların depolandığı durumunda <i>INI.</i> Dosya, program, belirli sayıda komut tasarrufu yapabilir ve yükleyebilir, örneğin 10 veya 50. Daha önemliyse, kodu tekrar yazmanız ve buna göre yeniden derlemeniz gerekir.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.ini_.jpg' height="145" width="247" loading=lazy loading=lazy><br> Kullanarak bir yaklaşım uygulamak <i>Xml</i> Dosyalar, bölümün tüm parametrelerini dinamik olarak indirme yeteneğine sahip olacağız. Bütün bunlara göre, yapılandırma dosyası, parametrelerin aşırı numaralandırılmadan daha zarif hale gelecektir. Ancak, çalışmak için standart araçlar <i>Xml</i> Delphi'nin birçok dezavantajı var, bu yüzden standart kütüphaneyi kullanmanızı öneririm <b>Msxml.</b>. Genellikle, Windows aile sistemlerinin varsayılan kısmıdır.</p><p><img src='https://i1.wp.com/zoo-mania.ru/wp-content/uploads/2011/08/settings.xml_.jpg' align="center" width="100%" loading=lazy loading=lazy><br> Bağlantı için <b>Msxml.</b>COM sunucusundan ithalat yaparak tüm fonksiyonların listesine sahip bir arabirim dosyası oluşturmamız gerekiyor. Arabirimin nasıl içe aktarılması yeterli detaylı makaleler yazılmadı, dosyayı indirmenizi öneririm <b>Msxml2_tlb.pas.</b> Zaten kullanmaya hazır. Dosya indirildikten sonra, projenizin yanına yerleştirin veya Delphi Lib lib klasörüne atın. Böylece, oluşturulan tüm programlar modülü kullanabilecektir. <b>Msxml.</b>, MSXML2_TLB'yi kullanımlara eklemek yeterlidir.</p><p>Netlik için, bu kütüphanenin uygulanmasının aşağıdaki örneğini göz önünde bulundurun:</p><p>Prosedür loaddata; Var xmldoc: domdocument; Kök: ixmldomelement; XMLDOC: \u003d codomdocument.create'e başla; Xmldoc.load ("settins.xml"); Kök: \u003d xmldoc.documentelement; Showmessage ("boyut / genişlik"). Metin); Kök: \u003d nil; Xmldoc: \u003d nil; son;</p><p>İlk olarak, DOMDocument sınıfının bir örneği oluşturulur, ardından Settings.xml dosyasının içeriği belleğe yüklenir. Standart'a göre <i>Xml</i> Dosya kök etiketini içermelidir (bu durumda <i>config</i>), sonra işlevi kullanmamız gerekiyor. <i>Belgeselleşme</i>. Sonra içeriğin etiketleri arasındaki içeriği <width></width> hangi sırayla etiketler arasında <size></size> . Böylece, settings.xml dosyasından, yöntemimiz MessageBox'ta metni dağıtacaktır. <i>"100px"</i>.</p><p> <?xml version="1.0" encoding="utf-8"?> <config> <size> <height>500 piksel</height> <width>100px</width> </size> </config> </p><p>Burada, dizeyi bir parametre olarak alan SELECTSINGLENDE yöntemi uygulanır.</p> <script>document.write("<img style='display:none;' src='//counter.yadro.ru/hit;artfast_after?t44.1;r"+ escape(document.referrer)+((typeof(screen)=="undefined")?"": ";s"+screen.width+"*"+screen.height+"*"+(screen.colorDepth? screen.colorDepth:screen.pixelDepth))+";u"+escape(document.URL)+";h"+escape(document.title.substring(0,150))+ ";"+Math.random()+ "border='0' width='1' height='1' loading=lazy loading=lazy>");</script> </div> </article> <div class="post-bottom"> <div class="post-share"> <script src="//yastatic.net/es5-shims/0.0.2/es5-shims.min.js"></script> <script src="//yastatic.net/share2/share.js"></script> <div class="ya-share2" data-services="vkontakte,facebook,odnoklassniki,moimir" data-counter=""></div> </div> </div> <div class='yarpp-related'> <div class="related-items"> <div class="headline">Sorunuza bir cevap bulamadınız mı? Buraya bak</div> <div class="items"> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/tr/1s-rasshirenie-raboty-failami-chrome-rasshirenie-dlya-raboty-s-failami-v.html"><img src="/uploads/b9a1cd0ff90fe53a44f4b868cd1ab03a.jpg" width="120" height="120" alt="Web istemcisindeki dosyalarla çalışmak için uzantı" class="related-item__image" / loading=lazy loading=lazy>Web istemcisindeki dosyalarla çalışmak için uzantı</a> <div class="related-item__comments"><span></span></div> </div> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/tr/kody-oshibok-elektronnoi-pochty-ispravlenie-oshibki-server.html"><img src="/uploads/c28f0dcb89eb151e87752da66b2f742f.jpg" width="120" height="120" alt="Hata düzeltme"Сервер отказал в доступе по протоколу POP3" при подключении почты Gmail!" class="related-item__image" / loading=lazy loading=lazy>Gmail Mail'i bağlarken "sunucu POP3 üzerinden erişimi reddetti" hatasını düzeltmek!</a> <div class="related-item__comments"><span></span></div> </div> <div class="related-item"> <a class="related-item__title" href="https://totrdlo.ru/tr/1s-8-1-ne-zapuskaetsya-na-windows-10-ispravlyaem-oshibku-poryadok.html"><img src="/uploads/ac8a980357b9757325284a326b9fd268.jpg" width="120" height="120" alt="1 Windows 10'da başlamıyor" class="related-item__image" / loading=lazy loading=lazy>1 Windows 10'da başlamıyor</a> <div class="related-item__comments"><span></span></div> </div> </div> </div> </div> <div style="text-align: center; margin-top: 15px; margin-bottom: 15px; " id="vanna-1965575812"><div class="adsense"><script type="text/javascript">ga_1();</script></div></div> </main> <aside class="sidebar"> <div class="advices" data-theme="vannapedia_v.3"> <div class="headline"></div> <div class="advices-content"> <img src="/uploads/95c0d840f7878d6b89f8e322632280e2.jpg" width="120" height="120" alt="Temel harici basılı formlara harici bir basılı form ekleme Zup 3" class="advices__image" / loading=lazy loading=lazy> <div class="advices__title" data-id="3334"><a href="https://totrdlo.ru/tr/dobavlenie-vneshnei-pechatnoi-formy-v-bazu-dobavlenie-vneshnei.html">Temel harici basılı formlara harici bir basılı form ekleme Zup 3</a></div> </div> </div> <div class="vk-widget" id="text-3"> <div class="textwidget"><script type="text/javascript" src="//vk.com/js/api/openapi.js?130"></script> <div id="vk_groups"></div> </div> </div> <div class="sidebar-questions"> <div class="headline">Yeni</div> <ul> <li><a href="https://totrdlo.ru/tr/zapret-provedeniya-dokumentov-v-1s-8-3-buhuchet-info-avtomaticheskaya.html" >1C 8'deki belgelerin yasaklanması</a></li> <li><a href="https://totrdlo.ru/tr/dlya-chego-nuzhno-razgranichenie-po-polzovatelyam.html" >Kullanıcılar tarafından ayrım yapmanız gerekenler için</a></li> <li><a href="https://totrdlo.ru/tr/otbor-v-tablice-znachenii-1s-8-2-kakie-metody-sushchestvuyut-i-kak-iskat-odnovremenno-po-neskolkim-zna.html" >1C değerler 8'deki seçim 8</a></li> <li><a href="https://totrdlo.ru/tr/obnovlenie-buhgalterii-2-0-na-3-0-uchet-materialno-proizvodstvennyh-zapasov.html" >Muhasebe Güncellemesi 2.</a></li> <li><a href="https://totrdlo.ru/tr/login-parol-dlya-obnovleniya-1s-roznica.html" >Güncelleme 1C perakende için kullanıcı adı şifresi</a></li> <li><a href="https://totrdlo.ru/tr/com-ustanovlen-bezopasnyi-rezhim-vypolnenie-operacii-zapreshcheno.html" >Harici işleme açma yazılımı</a></li> </ul> </div> <div class="section"> </div> <div class="section"> <div class="headline">Popüler Makaleler</div> <ul class="sidebar-posts"> <li><a href="https://totrdlo.ru/tr/podklyuchennyh-fiskalnyh-ustroistv-ne-naideno-ustanovka-i.html"><img src="/uploads/5df9163e05fa9245cdb80b7f64ec6186.jpg" width="80" height="80" alt="Bir mali kayıt şirketi kurmak ve yapılandırmak" / loading=lazy loading=lazy>Bir mali kayıt şirketi kurmak ve yapılandırmak</a></li> <li><a href="https://totrdlo.ru/tr/kak-izmenit-nazvanie-organizacii-v-1s-8-3-izmenenie-sluzhebnyh-rekvizitov.html"><img src="/uploads/eb6c692f9abb4922889b5f4223818c4a.jpg" width="80" height="80" alt="1C 8'de kuruluşun adını nasıl değiştirilir?" / loading=lazy loading=lazy>1C 8'de kuruluşun adını nasıl değiştirilir?</a></li> <li><a href="https://totrdlo.ru/tr/1s-8-3-kak-sdelat-pole-nedostupnym.html"><img src="/uploads/2ab15198b6dd38b0d618cbde07d80615.jpg" width="80" height="80" alt="3 Alanın erişilemez şekilde nasıl yapılır?" / loading=lazy loading=lazy>3 Alanın erişilemez şekilde nasıl yapılır?</a></li> </ul> </div> <div class="section"> <div class="headline">Sitede yeni</div> <ul class="sidebar-posts sidebar-photo"> <li><a href="https://totrdlo.ru/tr/biblioteka-standartnyh-podsistem-vnedrenie-biblioteki-standartnyh.html">Standart alt sistemlerin kütüphanesinin uygulanması BSP 1C güncellemesi</a></li> <li><a href="https://totrdlo.ru/tr/posle-obnovleniya-konfiguracii-1s-8-3-trebuet-licenziyu-ne-naidena-licenziya.html">Yapılandırma 1C 8 güncellendikten sonra</a></li> <li><a href="https://totrdlo.ru/tr/instrumenty-razrabotchika-obnovlenie-vspomogatelnyh-dannyh.html">Basılı formlarla yeni bir belge oluşturma</a></li> <li><a href="https://totrdlo.ru/tr/1s-obnovlenie-vspomogatelnyh-dannyh-obnovlenie-spravochnika-identifikatory.html">Monopolis olmayan meta veri nesnelerinin referans tanımlayıcılarını yenile</a></li> <li><a href="https://totrdlo.ru/tr/periodicheskie-registry-svedenii-v-1s-8-3-poisk-i-chtenie-v-registre.html">1C 8'de Periyodik Bilgi Kayıtları</a></li> </ul> </div> </aside> </div> <footer class="footer"> <nav class="footer__nav"><ul><li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1219"><a href="https://totrdlo.ru/tr/">Yeni</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/tormoza-na-failovoi-baze---kak-izbezhat-iz-nedavnego-opyta-tormoza-na.html">Dosya veritabanında frenler - nasıl önlenir (son deneyimden) Yapılandırma 1C tablosunu engelleyemedi</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/kak-otklyuchit-obnovlenie-1s-8-3.html">Güncelleme 1C 8 Nasıl Devre Dışı Bırakılır</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/skachat-shablon-1s-8-3-buhgalteriya-shablony-konfiguracii-i.html">İndirme şablonu 1C 8.3 Muhasebe. Yapılandırma ve güncelleme şablonları. Yapılandırma Kurulum Dosyalarını İndirin</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/vybor-nastroek-dinamicheskogo-spiska-1s-8-3-sposoby-polucheniya-i.html">1C 8 dinamik liste ayarlarını seçin</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1230"><a href="https://totrdlo.ru/tr/">Popüler</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/vypolnenie-obrabotchikov-obnovleniya-ne-zakanchivaetsya-procedury.html">Veri İşleme Prosedürleri</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/perenos-1s-bazovaya-na-drugoi-kompyuter-dobavlenie-bazy.html">1C Basic'i başka bir bilgisayara aktarın</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/pereustanovit-1s-na-drugoi-kompyuter-ustanovka-licenzii-na.html">Yeni bir bilgisayara lisans yüklemek</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/portal-predostavleniya-gosudarstvennyh-uslug-gosuslugi-lichnyi-kabinet.html">Devlet Hizmetleri Kişisel Hesap</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/gosportal-gosudarstvennyh-uslug-gosuslugi--lichnyi-kabinet--vhod.html">Devlet Denetleme Kabine - Snils ve Telefon Üzerine Giriş</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/edinyi-telefon-sluzhby-spaseniya-v-rossiiskoi-federacii-ekstrennye-telefony.html">Rusya Federasyonu'nda tek telefon kurtarma hizmeti</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/departament-informacionnyh-tehnologii-svyazi-i-zashchity-informacii.html">Bilgi Teknolojileri Bölümü, İletişim ve Bilginin Korunması Bilgi Bakanlığı</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/okazanie-pervoi-pomoshchi-pri-elektricheskom-toke-deistviya-i.html">Elektrik çarpması ile eylemler ve ilk yardım</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-1236"><a href="https://totrdlo.ru/tr/">Önerilen</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/ekstrennyi-vyzov-s-sotovogo-telefona-telefonnye-mobilnye-nomera.html">Telefon mobil acil durum hizmetleri</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/upravlenie-departamenta-po-cao-go-i-chs-ministerstvo-rossiiskoi-federacii-po.html">Rusya Sivil Savunma Federasyonu, Acil Durumlar ve Afet Kavramlarının Eliminasyonu (Rusya'nın Emercom)</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/so-optimizaciya-servernoi-infrastruktury-so-optimizaciya-servernoi.html">Sunucu altyapısının optimizasyonu Sunucular için sunucu altyapısı teknik optimizasyon çözümleri</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/tehnologiya-provedeniya-migracii-dannyh-v-krupnyh-proektah-migraciya.html">Göç Veritabanı Veri Geçiş Metodolojisi</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/zafiksirovany-izmeneniya-v-konfiguracii-sistemy-izmeneniya.html">Sistem yapılandırmasında değişiklikler kaydedilir</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/pometka-na-udalenie-1s-8-3-buhuchet-info-avtomaticheskoe-udalenie-obektov-po.html">Çıkarma 1C 8 için Mark</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/kak-rabotat-v-programme-gis-gmp-instrukciya-po-podklyucheniyu-uchastnikov-i-po.html">Katılımcıları bağlamak ve GIS GMP levhalarıyla etkileşimi kontrol etmek için talimatlar GIS GMP'ye bağlanamaz.</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-"><a href="https://totrdlo.ru/tr/1s-8-udalenie-pomechennyh-obektov-buhuchet-info-pochemu-ne.html">1C 8 İşaretli nesneleri çıkarma</a></li> </ul> </li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-has-children menu-item-6898"><a href="https://totrdlo.ru/tr/">Site hakkında</a> <ul class="sub-menu"> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6900"><a href="">Site hakkında</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6901"><a href="">Web sitesinde reklam</a></li> <li class="menu-item menu-item-type-taxonomy menu-item-object-category menu-item-6902"><a href="">İletişim</a></li> </ul> </li> </ul></nav> <div class="footer-bottom"> <div class="footer-left"> <div class="foot__logo"> <div class="footer__logo-sitename">totrdlo.ru. <span> Ru</span></div> </div> <style> .foot__logo { min-height: 35px; margin: 0 0 11px -79px; padding: 9px 0 0 79px; text-decoration: none; } </style> <p>© 2021 Tüm Hakları Saklıdır</p> <p>Mobil rehberiniz. Operatörler. Faydalı tavsiyeler</p> <ul class="footer-bottom__nav"> <li><a href="" >Proje üzerinde reklam</a></li> </ul> </div> <div class="footer-buttons"> </div> <ul class="footer__soc"> <li><a href="http://vk.com/" target="_blank" class="vk">Temas halinde</a></li> <li>Odnoklassniki.</li> <li><a href="http://www.facebook.com/" target="_blank" class="fb">Facebook.</a></li> <li><a href="https://twitter.com/" target="_blank" class="twi">Twitter.</a></li> </ul> <div class="footer-right"> <div class="footer__note"></div> <div class="footer__counters" id="text-2"> <div class="textwidget"></div> </div> </div> </div> </footer> </div> </div> <link rel='stylesheet' id='wp-lightbox-bank.css-css' href='/wp-content/plugins/wp-lightbox-bank/assets/css/wp-lightbox-bank.css?ver=4.8.3' type='text/css' media='all' /> <script type='text/javascript' src='https://totrdlo.ru/wp-content/themes/vannapedia_v.3/js/scripts.js'></script> <script type='text/javascript' src='/wp-includes/js/comment-reply.min.js?ver=4.8.3'></script> <script type='text/javascript' src='/assets/scripts1.js'></script> <script type='text/javascript'> /* <![CDATA[ */ var tocplus = { "smooth_scroll":"1"} ; /* ]]> */ </script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/table-of-contents-plus/front.min.js?ver=1509'></script> <script type='text/javascript'> var q2w3_sidebar_options = new Array(); q2w3_sidebar_options[0] = { "sidebar" : "sidebar-fixed", "margin_top" : 10, "margin_bottom" : 0, "stop_id" : "respond", "screen_max_width" : 0, "screen_max_height" : 0, "width_inherit" : false, "refresh_interval" : 1500, "window_load_hook" : false, "disable_mo_api" : false, "widgets" : ['text-4'] } ; </script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/q2w3-fixed-widget/js/q2w3-fixed-widget.min.js?ver=5.0.4'></script> <script type='text/javascript' src='/wp-includes/js/wp-embed.min.js?ver=4.8.3'></script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/wp-lightbox-bank/assets/js/wp-lightbox-bank.js?ver=4.8.3'></script> <script type='text/javascript' src='https://totrdlo.ru/wp-content/plugins/akismet/_inc/form.js?ver=4.0'></script> </body> </html>